文章目录
- 第一章:PHP语言基础
- 第二章:流程控制语句
- 第三章:字符串操作
- 第四章:正则表达式
- 第五章:数组
- 5.1 数组的类型
- 5.2 输出数组
- 5.3 二维数组
- 5.4 遍历数组
- 5.5 字符串与数组的转换
- 5.6 统计数组元素个数
- 5.8 获取数组中最后一个元素
- 5.9 向数组中添加元素
- 5.10 删除数组中重复的元素
- 第六章:PHP与Web页面交互
- 第七章:PHP与JavaScript交互
- 第八章:PHP与MySQL
第一章:PHP语言基础
1.1 PHP的标记风格
-
XML风格
<?php echo "XML风格的标记"; ?>
推荐使用此种标记,服务器不能禁用,在XML和XHTML中都可以使用
-
脚本风格
<script language="php"> echo "脚本风格的标记"; </script>
-
简短风格
<? echo "简短风格标记"; ?>
-
ASP风格
<% echo "ASP风格标记"; %>
简短风格和ASP风格标记的使用,需要对php.ini进行配置,将里面的short_open_tag和asp_tags都设置为on,然后重启Apache服务器即可
###1.2 PHP的注释
<?php
/*You are
so
cute */
echo "666"; //输出666
echo "520"; #输出520
?>
多行注释: /* */(类似于C++)
单行注释: //或#
注意:单行注释里不要出现“ ?> ”的标志,这样会让解释器认成php脚本结束的标志
1.3 PHP的数据类型
1.3.1 标量数据类型
标量数据类型是数据结构中最基本的数据单元,只能存储一个数据
类型 | 描述 |
---|---|
布尔型 | 只有true和false两个值 |
字符串型 | 单个或连续的字符集合 |
整型 | 整数类型,正数或负数都可 |
浮点型 | 存储有小数位的数字 |
1.3.2 复合数据类型
-
数组(array)
<?php //三种创建方式 //第一种: $array_name = array('value1', 'value2'......); //第二种: $array_name[key] = 'value'; //第三种: $array_name = array(key1 => value1, key2 => value2......); ?>
-
对象(object)
对象是类的实例
1.3.3 数据类型转换
-
自动转换
- bool型与数值型运算:true转为整数1,false转为整数0
- 字符串型与数值型运算:若字符串是以数字开头,则转换为开头的那个数字,否则转换为0
- 字符串拼接时:true变为字符串’1’,false和null变为空字符串’’,整数和浮点数会转换成字符串型数据
- 逻辑运算:0,0.0, ‘’,NULL,‘0’,空数组都会被转为false
-
强制转换
转换符 功能 举例 (boolean)或(bool) 转布尔型 $num = (bool)$num、$num = (boolean)$num (string) 转字符串型 $num = (string)$num (int)或(integer) 转整型 $num = (int)$num、$num = (integer)$num (float)、(double)、(real) 转浮点型 $num = (float)$num (array) 转数组 $num = (array)$num **bool settype(var, type)**可以帮助完成类型转换,如:
$num = '3.14phporg'; settype($num, 'int'); echo $num;
此段代码输出结果为3
此外,"echo settype($num, ‘int’);"的输出结果为1,因为settype函数的返回值是个bool类型,如果转换成功,结果就为true,输出值就为1
还有一些函数:
函数 功能 intval(var) 转整型 floatval(var)、doubleval(var) 转浮点型 boolval(var) 转布尔型
1.3.4 检测数据类型
函数 | 功能 |
---|---|
is_bool(var) | 检测变量是否为布尔型 |
is_string(var) | 检测变量是否为字符串 |
is_float(var)、is_double(var) | 检测变量是否为浮点型 |
is_integer(var)或is_int(var) | 检测变量是否为整型 |
is_null(var) | 检测变量是否为空(NULL) |
is_array(var) | 检测变量是否为数组类型 |
is_numeric(var) | 检测变量是否为数字或由数字组成的字符串 |
1.4 PHP常量
1.4.1 声明和使用常量
常量值被定义后,在脚本的其他任何地方都不能改变。PHP中使用==define()==函数来定义常量,该函数语法如下:
define(string constant_name, mixed value, case_sensitive = false)
参数 描述 constant_name 必选参数,常量的名称,即标识符 value 必选参数,常量的值 case_sensitive 可选参数,指定是否大小写敏感,设定为true则表示不敏感
其他关于常量的函数:
函数 | 功能 |
---|---|
constant(constant_name) | constant_name为常量名,如何该常量存在则获取常量值,否则报错 |
defined(constant_name) | 判断常量是否被定义,若被定义则返回true |
例子:
<?php define('AGE', '年龄18'); echo AGE.'<br>'; //输出常量AGE的值 echo Age.'<br>'; //默认大小写敏感,不存在常量Age,输出字符串'Age' define('NAME', '小明', true);//true表示大小写不敏感 echo NAME.'<br>'; echo name.'<br>'; //两者输出结果相同 echo constant('AGE').'<br>'; $age = 'AGE'; echo constant($age).'<br>'; echo constant('aGe').'<br>'; //常量不存在,报错 echo defined($age); ?>
运行结果:
年龄18
Age
小明
小明
年龄18
年龄18
Warning: constant(): Couldn’t find constant aGe in …
1
1.4.2 预定义常量
PHP里有很多已经定义、常量,我们可以利用这些常量来获取PHP中的信息
常量名 | 功能 |
---|---|
__FILE__ | PHP程序文件名 |
__LINE__ | PHP程序行数 |
PHP_VERSION | PHP程序的版本 |
PHP_OS | 执行PHP解析器的操作系统 |
TRUE | 该常量是一个真值(true) |
FALSE | 该常量是一个假值(false) |
NULL | 一个空值(null) |
E_ERROR | 该常量指到最近的错误处 |
E_WARNING | 该常量指到最近的警告处 |
E_PARSE | 该常量指到解析语法有潜在问题处 |
E_NOTICE | 该常量为发生不寻常处的提示 |
1.5 PHP变量
1.5.1 变量声明及使用
变量名由数字、字母或下划线组成,但不能以数字开头。除此之外的其他字符也不能够出现在变量名中。变量是由"$"符加变量名组成。
<?php
$age_666 = 'my age is 18!'; //合法变量名
$123_flag = 'valid name'; //以数字开头,非法变量名
$age@^ = 'vaild string'; //含有非法字符@、^,非法变量名
?>
变量赋值:
<?php
$string1 = 'value1'; //变量声明时直接赋值
$string2 = $string1; //变量间传值
$string3 = &$string1; //引用传值
?>
引用赋值使得多个变量访问同一内存,其中一个变量值改变时,其它值也改变
1.5.2 变量作用域
作用域 | 描述 |
---|---|
局部变量 | 函数内部定义的变量,只在该函数内部有效 |
全局变量 | 被定义在所有函数以外的变量,作用于整个PHP文件,但在用户自定义函数内部是不可用的。可以使用global关键字使得该变量可以在自定义函数内使用 |
静态变量 | 能在函数调用结束后仍然保留变量值,使用static关键字来声明 |
1.5.3 可变变量
看一段例子:
<?php
$a = 'b';
$b = '我喜欢PHP';
echo $a.'<br>';
echo $$a;
?>
第一输出的是$a的值’b’,这没有问题。第二个输出的是’
1.5.4 预定义变量
PHP提供了很多非常实用的预定义变量, 通过这些预定义变量可以获取用户会话、 用户操作系统 的环境和本地操作系统的环境等信息。下表列举出了几个。
变量名 | 描述 |
---|---|
$_COOKE | 通过HTTPCook.ie传递到脚本的信息,这些cookie多数是由执行PHP脚本时 通过setcookie()函数设置的 |
$_ SESSION | 包含与所有会话变量有关的信息。$_SESSION变量主要应用于会话控制和页 面之间值的传递 |
$_POST | 包含通过POST方法传递的参数的相关信息。牛要用千获取通过POST方认提交的数据 |
$_GET | 包含通过GET方法传递的 参数的 相关信息。主荌用于获取通过GET方法提交 的数据 |
1.6 PHP运算符
-
算术运算符
符号 描述 + 加法运算符,$a+$b - 减法运算符,$a-$b * 乘法运算符,$a*$b / 除法运算符,整除,$a/$b % 取余运算符,$a%$b -
字符串运算
'.'可以连接两个字符串
<?php $n = '3.14abc'; $m = 2; echo $n.$m.'<br>'; echo $m.$n.'<br>'; echo ($m+$n).'<br>'; echo ($n+$m).'<br>'; ?>
输出结果:
3.14abc2
23.14abc
5.14
5.14 -
赋值运算符
如:$a += $b的意思是$a = $a + $b。此外,还有类似的-=、*=、/=、.=、%=
-
位运算符
符号 作用 & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 << 向左移位 >> 向右移位 -
逻辑运算符
符号 作用 &&或and 逻辑与 ||或or 逻辑或 xor 逻辑异或(用于判断一真一假的情形) ! 逻辑非 -
条件运算符
"? :“就是条件运算符,用法如"echo (5>2) ? 5 : 2;”,如果’?‘前面的表达式为真,输出’:‘前的内容,否则输出’:'后的内容
-
比较运算符
运算符 名称 描述 x == y 等于 如果x等于y,返回true(5=='5’成立) x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true(5==='5’不成立) x != y 不等于 如果 x 不等于 y,则返回 true x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true
1.7 PHP函数
-
定义
function 函数名( 参数 ){
函数体;
}
-
传递参数
<?php function aaa($m){ $m = $m*5 + 10; echo $m.'<br>'; } $m = 10; aaa($m); //按值传参,不改变原参数的值 echo $m; ?> /* 输出结果:60,10 */ <?php function aaa(&$m){ $m = $m*5 + 10; echo $m.'<br>'; } $m = 10; aaa($m); //引用传参,改变原参数的值 echo $m; ?> //结果:60,60
默认参数:
<?php function aaa($m, $t=5){ $m = $m*5 + 10 + t; echo $m.'<br>'; } $m = 10; aaa($m); //没传t值,默认为5,输出65 aaa($m, 10); //t值为10,输出70 echo $m; ?>
注意:默认参数必须放在非默认参数的右侧,从PHP5开始,默认值也可以通过引用传递
-
变量函数
PHP很有意思的一点就是这个变量函数
<?php function aaa(){ echo 'my name '; } function bbb(){ echo 'is '; } function ccc($name){ echo $name; } $func = 'aaa'; //$func值与函数名'aaa'相同 $func(); //调用aaa函数 $func = 'bbb'; //$func值与函数名'bbb'相同 $func(); //调用bbb函数 $func = 'ccc'; //$func值与函数名'ccc'相同 $func('scgg'); //调用ccc函数 ?>
输出结果为:
my name is scgg
第二章:流程控制语句
2.1 if系列语句
用一个例子描述,假如小明的考试成绩为*$grade*,成绩低于60分为不及格,60~79为及格,80~89为良好,90~100为优秀,那么我们可以通过if语句来判断小明所处的等级。
<?php
$grade = rand(0,100); //rand(a, b)函数可以随机生成a到b范围内的一个数
if ($grade < 60)
{
echo '小明成绩为'.$grade.',不及格,要补考';
}
else if ($grade >= 60 and $grade <= 79)
{
echo '小明成绩为'.$grade.',及格了';
}
else if ($grade >= 80 and $grade <= 89)
{
echo '小明成绩为'.$grade.',良好';
}
else
{
echo '小明成绩为'.$grade.',非常优秀!';
}
?>
执行结果为:
第一次运行结果:
小明成绩为33,不及格,要补考
第二次运行结果:
小明成绩为76,及格了
第三次运行结果:
小明成绩为100,非常优秀!
2.2 switch语句
按照上例中的等级划分:
<?php
$class = array('不及格', '及格', '良好', '优秀');
$num = rand(0,3);
switch($class[$num])
{
case '不及格':
echo '等级为'.$class[$num].',小明成绩低于60分';
break;
case '及格':
echo '等级为'.$class[$num].',小明成绩在60~79之间';
break;
case '良好':
echo '等级为'.$class[$num].',小明成绩在80~89之间';
break;
case '优秀':
echo '等级为'.$class[$num].',小明成绩高于90分';
}
?>
一次运行结果:
等级为优秀,小明成绩高于90分
2.3 while与do……while语句
打印出1~20内的所有偶数
<?php
//while语句
$num = 1;
echo '20内的所有偶数为:';
while ($num <= 10)
{
if ($num % 2 == 0)
echo ' '.$num;
$num++;
}
?>
结果:
20内的所有偶数为: 2 4 6 8 10
?php
//while语句
$num = 1;
echo '20内的所有偶数为:';
do
{
if ($num % 2 == 0)
echo ' '.$num;
$num++;
}
while ($num <= 10);
?>
结果:
20内的所有偶数为: 2 4 6 8 10
2.4 for语句
输出10的阶乘
<?php
$sum = 1;
for($num = 1; $num <= 10; $num++)
{
$sum *= $num;
}
echo '10的阶乘为'.$sum;
?>
结果:
10的阶乘为3628800
2.5 foreach语句
PHP5中foreach语句支持对数组和对象的遍历,且只支持这些遍历。
<?php
$string_1 = array('my', 'age', 'is', '20');
$string_2 = array('1'=>'are', '2'=>'you', '3'=>'ok!');
foreach($string_1 as $value) //从头到尾遍历数组,值赋给$value
{
echo $value.' ';
}
echo '<br>';
foreach ($string_2 as $key => $value) //下标赋值给$key,值赋给$value
{
echo $key.':'.$value.' ';
}
echo '<br>';
foreach ($string_1 as $key => $value)
{
echo $key.':'.$value.' ';
}
?>
运行结果:
my age is 20
1:are 2:you 3:ok!
0:my 1:age 2:is 3:20
2.6 跳转语句
语句 | 作用 |
---|---|
continue | 跳过本次循环剩余步骤,直接进入下次循环 |
break | 跳出循环体 |
第三章:字符串操作
3.1 字符串的定义方法
3.1.1 单引号与双引号的区别
<?php
$text_1 = 'Hello, world!';
$text_2 = "Hello, world!";
echo $text_1.'<br>';
echo $text_2.'<br>';
$str1 = 'he said >>> $text_1'; //单引号里$text_1不会被解析,被当成普通字符串处理
$str2 = "he said >>> $text_1"; //双引号里$text_1会被解析器解析,会变为'Hello, world!'
echo $str1.'<br>';
echo $str2.'<br>';
?>
结果:
Hello, world!
Hello, world!
he said >>> $text_1
he said >>> Hello, world!
故两者区别为:
单引号 | 里面的内容不会被解析器解析,原样输出,所见即所得 |
---|---|
双引号 | 里面的内容会被解析,如果有变量,则替换为该变量的值 |
3.1.2 使用定界符定义字符串
格式如下:
<<<str
格式化文本
str
'<<<'是关键字,必须使用;'str’是用户自定义的定界符,用于标识文本的起始和结尾。
示例:
<?php
$str = '定界符,';
echo <<<border
<font color="blue">你学会$str 了吗?</font>
border;
?>
结果:
你学会定界符, 了吗?
注意:在上面的代码中, 值得注意的是, 在定界符内不允许添加注释, 否则程序将运行出错。 结束标识符所在的行不能包含任何其他字符, 而且不能被缩进, 在标识符分号前后不能有任何空白字符或制表符。
3.2 字符串操作
3.2.1 去除字符串首尾空格和特殊字符
函数 | 描述 |
---|---|
trim(字符串, 字符) | 去除字符串里的指定字符。若字符选项为空,则去除字符串两端的空格 |
ltrim(字符串, 字符) | 去除字符串左端的指定字符,若无指定字符,则去除左端的空格 |
rtrim(字符串, 字符) | 去除字符串右端的指定字符,若无指定字符,则去除右端的空格 |
3.2.2 转义、还原字符串数据
-
**addslashes(str)**函数
str为需要转义的字符串,该函数会在单引号、双引号、反斜线与NULL字符前自动添加反斜线进行转义
-
**stripslashes(str)**函数
返回值为一个去除转义斜线后的字符串
例子:
<?php
$sql = "select * from user where id = '666'";
echo '转义后为:'.addslashes($sql);
echo '<br>';
$sql = addslashes($sql);
echo '反转义后为:'.stripslashes($sql);
?>
结果:
转义后为:select * from user where id = ‘666’
反转义后为:select * from user where id = ‘666’
-
**addcslashes(string, char)**函数
对字符串string里的指定字符char进行转义,其他非字母数字且ASCU码低于 32 以及高于126 的字符均转换成八进制表示。
-
**stripcslashes(str)**函数
用于还原addcslashes函数转义的字符串。
例子:
<?php
$sql = "我是scgg, hello!";
echo '转义后为:'.addcslashes($sql,$sql);
echo '<br>';
$sql = addcslashes($sql,$sql);
echo '反转义后为:'.stripcslashes($sql);
?>
结果:
转义后为:\346\210\221\346\230\257\s\c\g\g,\ \h\e\l\l\o!
反转义后为:我是scgg, hello!
3.2.3 获取字符串长度
- **strlen(str)**函数获取指定字符串str的长度(汉字占两个字符)
3.2.4 截取字符串
语法:
string substr(str, start, length)
参数 | 描述 |
---|---|
str | 指定字符串对象 |
start | 指定开始截取字符串的位置。 如果参数start为负数, 则从字符串的末尾开始截取,字符串第一个字符位置为0 |
length | 指定从开始位置截取字符的个数, 如果length为负数, 则表示取到倒数第length个字符 |
例子:
<?php
echo substr("She is a well-read girl", 0);
echo "<br>";
echo substr("She is a well-read girl", 4, 14);
echo "<br>";
echo substr("She is a well-read girl", -4, 4);
echo "<br>";
echo substr("She is a well-read girl", 0,-4);
?>
结果:
She is a well-read girl
is a well-read
girl
She is a well-read
3.2.5 比较字符串
-
按字节进行字符串的比较
按字节进行字符串比较的方法有两种, 分别是 strcmp()和 strcasecmp()函数, 通过这两个函数即可 实现对字符串进行按字节的比较。这两种函数的区别是 strcmp()函数区分字符的大小写,而 strcasecmp() 函数不区分字符的大小写。 由于这两个函数的实现方法基本相同, 这里只介绍 strcmp()函数。
int strcmp (string str1, string str2)
str1 和 str2 指定要比较的两个字符串。 如果 strl 和 str2 相等, 则返回 0; 如果 str1大于 str2, 则返回值大于 0; 如果 str1小于 str2, 则返回值小于 0。
-
按自然排序法进行字符串的比较
int strnatcmp (string str1, string str2)
如果字符串str1和str2相等,则返回0;如果str1大于str2则返回值大于0;如果str1小于str2, 则返回值小于0。strnatcmp()函数区分字母大小写。
注意:在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为"10’'中的笫一个数字是’1’它小于2。
例子:
<?php
$str1 = 'str2.jpg';
$str2 = 'str100.jpg';
$str3 = 'php';
$str4 = 'PHP';
echo strcmp($str1, $str2).'<br>';
echo strnatcmp($str1, $str2).'<br>';
echo strcmp($str3, $str4).'<br>';
echo strnatcmp($str3, $str4).'<br>';
?>
结果:
1
-1
1
1
-
指定从源字符串的位置开始比较
int strncmp(string str1 ,string str2,int len)
此函数用于比较前len个字符,其中len为指定参与比较的字符的数量,此函数区分大小写
3.2.6 检索字符串
-
strstr(string, needle)
参数 描述 string 必要参数, 指定从哪个字符串中进行搜索 needle 必要参数, 指定搜索的对象。 如果该参数是 个数值, 那么将搜索与这个数值的 ASCII 值相匹配的字符 例子:
<?php $str1 = 'str2.jpg'; $str2 = strstr($str1,'.'); $str3 = strstr($str1,'2'); echo $str2.'<br>'.$str3; ?>
结果:
.jpg
2.jpgstrrchr()函数与其正好相反, 该函数是从字符串后序的位置开始检索子串(子字符串)的,结果与strstr()相同
-
使用**substr_ count(str, char)**函数检索子串出现的次数
3.2.7 替换字符串
-
**str_ireplace()**函数
str_ireplace (search, replace, subject [, count])
参数 描述 search 要搜索的值, 可以使用array来提供多个值 replace 指定替换原字符的值 subject 要被搜索和替换的字符串或数组 count 执行替换的数量 -
**substr_replace()**函数
substr_replace(string, repl, start,[ length])
参数 描述 string 原始字符串 repl 指定替换后的新字符串 start 指定替换字符串开始的位置。 正数表示替换从字符串的第 start 位置开始; 负数表示替换从字符串的倒 数第 start 位置开始; 0 表示替换从字符串中的第一 个字符开始 length 可选参数,指定返回的字符串长度。默认值是整个字符串。正数表示被替换的子字符串的长度;负数表示待替换的子宁符串结尾处距离字符串末端的字符个数;0 表示将 repl插入到 string 的 start 位置处
3.2.8 格式化字符串
number_format(float number[,int decimals [,string dec_point[,string thousand_sep]]])
number为要格式化的数字,dee皿als为要保留的小数位数,dec_point为指定小数点显示的字符,thousands_sep为指定千位分隔符显示的字符 。此函数可以有1、2、4个参数,但不能是3个参数
例子:
<?php
$num = 12345678.12345689;
echo number_format($num,5,'.','"');
?>
结果:
12"345"678.12346
3.2.9 分割字符串(及print_r与echo的区别)
explode(string delimiter,string str[int limit])
参数 | 描述 |
---|---|
delimiter | 边界上的分隔符 |
str | 要被分割的字符串 |
limit | 分割次数,可选参数 |
例子:
<?php
$a = 'c++%python%php%go%java';
$b = explode('%',$a);
print_r($b);
echo '<br>';
echo $b.'<br>';
echo $b[0];
?>
结果:
Array ( [0] => c++ [1] => python [2] => php [3] => go [4] => java )
Array
c++
print_r可以输出数组,echo只能输出单个元素
3.2.10 合并字符串
**implode(strihg glue, array pieces) **
glue是指定的连接符,pieces是数组类型,指定要被合并的数组。
第四章:正则表达式
4.1 语法规则
符号 | 用法 | 例子 |
---|---|---|
^ | 表示行的开始 | ^word |
$ | 表示行的结尾 | word$ |
\b | 表示要查找的字串为一个完整的单词 | \bword\b |
\B | 表示要查找的不是一个完整的单词,而是单词或字符串的一部分 | \Btem\B |
[ ] | 忽略大小的匹配一个字符 | [tT] |
[[:digit:]] | 十进制数字集合,等同于[0-9] | |
[[:alnum:]] | 字母和数字的集合,等同于[a-zA-Z0-9] | |
[[:alpha:]] | 字母集合,等同于[a-zA-Z] | |
[[:blank:]] | 空格和制表符 | |
[[:xdigit:]] | 十六进制数字 | |
[[:punct:]] | 特殊字符集合。包括键盘上的所有特殊字符,如“!” “@” “#” “S” “?”等 | |
[[:print:]] | 所有的可打印字符(包括空白字符) | |
[[:space:]] | 空白字符(空格、换行符、换页符、回车符、水平制表符) | |
[[:graph:]] | 所有的可打印字符(不包括空白字符) | |
[[:upper:]] | 所有大写字母,等同于[A-Z] | |
[[:lower:]] | 所有小写字母,等同于[a-z] | |
[[:cntrl:]] | 控制字符 | |
| | 或,表选择 | (T|t)(M|m)表示匹配四种组合方式:TM、Tm、tM、tm |
- | 连字符,表示可选字符的范围 | [a-z] |
[^] | ^放在括号内表示排除,取非的意思 | [^a-zA-Z] |
? | 匹配前面的字符0次或1次 | cplou?r:color或colour |
+ | 匹配前面的字符一次或多次 | |
* | 匹配前面的字符0次或多次 | |
{n} | 匹配前面的字符n次 | |
{n,} | 匹配前面的字符最少n次 | |
{n,m} | 匹配前面的字符最少n次,最多m次 | |
. | 匹配除换行符外任意的一个字符 | |
\ | 转义等功能 | |
\d | 任意一个十进制数字,相当于[0-9] | |
\D | 任意一个非十进制数字 | |
\s | 任意一个空白字符(空格、换行符、换页符、同车符、水平制表符) ,相当千[\f\n\r\t] | |
\S | 任意一个非空白字符 | |
\w | 任意一个单词字符,相当于[a-zA-Z0-9] | |
\W | 任意一个非单词字符 | |
() | 1.改变限定符的作用范围;2.分组 | |
反向引用 | 依靠式子的记忆功能来匹配连续出现的字符串 | (if)(we)\1\2:匹配字符串ifweifwe |
4.2 函数
-
preg_grep(string pattern, array input )
<?php $preg = '/\w{7,}@\w{2,}\.com/'; $ary = array('scgg@163.com','1859663@qq.com','your6666@aliyun.com'); $preg_array = preg_grep($preg, $ary); var_dump($preg_array); ?>
结果:
array(2) { [1]=> string(14) “1859663@qq.com” [2]=> string(19) “your6666@aliyun.com” }
注意:正则表达式前后要加’/'
-
preg_match()和preg_match_all()函数
**int preg_match/preg_match_all(string pattern, string subject [, array matches]) **
函数preg_match()的返回值是0或1, 因为该函数在匹配成功后就停止继续查找了。而preg_match_all()函数则会一直匹配到最后才停止。参数matches是将匹配到的字符存储在该数组里。
例子:
<?php $str = 'This is an example!'; $preg = '/\b\w{2}\b/'; $num1 = preg_match($preg, $str, $str1); echo $num1.'<br>'; var_dump($str1); $num2 = preg_match_all($preg, $str, $str2); echo '<p>'.$num2.'<br>'; var_dump($str2); ?>
结果:
1
array(1) { [0]=> string(2) “is” }2
array(1) { [0]=> array(2) { [0]=> string(2) “is” [1]=> string(2) “an” } } -
string preg_quote (string str [, string delimiter])
将str里的特殊字符进行转义,如果有参数delimiter,那么str里也会将该参数转义。该函数返回转义后的字符串。
-
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
该函数在字符串subject中匹配表达式pattern, 并将匹配项替换成字串replacement。 如 果有参数limit, 则替换limit次。
-
mixed preg_replace_callback (mixed pattern, callback callback, mixed subject[, int limit])
preg_replace_ callback()函数与preg_replace()函数的功能相同,都用于查找和替换字串 。不同的是,preg_replace _ callback()函数使用一个回调函数(callback)来代替replacement参数。
-
array preg_split (string pattern, string subject [, int limit])
使用表达式pattern来分割字符串subject。
第五章:数组
5.1 数组的类型
5.1.1 数字索引数组
数组的键值为数字
5.1.2 关联数组
键值为字符串:
姓名为Jack,年龄为22,身高为185
20<?php
$newAry = array('name'=>'Jack', 'age'=>'22', 'height'=>'185');
echo '姓名为'.$newAry['name'].',年龄为'.$newAry['age'].',身高为'.$newAry['height'].'<br>';
$newAry['age'] = '20';
echo $newAry['age'];
?>
结果为:
姓名为Jack,年龄为22,身高为185
20
5.2 输出数组
使用**print_r( expression )**函数:
如果该函数的参数expression为普通的整型、 字符型或实型变量, 则输出该变量本身。 如果该参数为数组, 则按一定键值和元素的顺序显示出该数组中的所有元素。
5.3 二维数组
<?php
$new = array(0=>array('数学','英语'),'girl'=>array('one'=>'刘亦菲','third'=>'赵丽颖'));
echo $new[0][1].'<br>';
print_r($new['girl']['one']);
echo '<br>';
print_r($new);
?>
结果:
英语
刘亦菲
Array ( [0] => Array ( [0] => 数学 [1] => 英语 ) [girl] => Array ( [one] => 刘亦菲 [third] => 赵丽颖 ) )
5.4 遍历数组
5.4.1 foreach遍历
<?php
//一维数组遍历
$str = array('1','2','3');
foreach($str as $value)
{
echo $value.';';
}
echo '<br>';
//二维数组遍历
$new = array(0=>array('数学','英语'),'girl'=>array('one'=>'刘亦菲','third'=>'赵丽颖'));
foreach($new as $value)
{
foreach($value as $val)
{
echo $val.';';
}
}
?>
结果:
1;2;3;
数学;英语;刘亦菲;赵丽颖;
5.4.2 list函数遍历
<?php
$my_array = array("Dog","Cat","Horse");
list($a, $b, $c) = $my_array;
echo "I have several animals, a $a, a $b and a $c.";
?>
结果:
I have several animals, a Dog, a Cat and a Horse.
5.5 字符串与数组的转换
5.5.1 字符串转数组
<?php
$str = '皮卡丘,杰尼龟,比雕';
$ary = explode(',',$str);
print_r($ary);
?>
结果:
Array ( [0] => 皮卡丘 [1] => 杰尼龟 [2] => 比雕 )
5.5.2 数组转字符串
<?php
$str = '皮卡丘,杰尼龟,比雕';
$ary = explode(',',$str);
print_r($ary);
echo '<br>';
$str = implode('、',$ary);
print_r($str);
?>
结果:
Array ( [0] => 皮卡丘 [1] => 杰尼龟 [2] => 比雕 )
皮卡丘、杰尼龟、比雕
5.6 统计数组元素个数
int count (mixed array [, int mode])
参数 | 描述 |
---|---|
array | 数组 |
mode | 默认为0,使用默认值时只能遍历一维数组。设置为COUNT_RECURSIVE (或 1)时,能遍历多维数组 |
<?php
$str = array('1','2','3','4','5');
$str2 = array(0=>array('1','2','3'),1=>array('1','2'));
echo count($str).'<br>';
echo count($str2).'<br>';
echo count($str2,1);
?>
结果:
5
2
7
###5.7 查询数组中指定元素
mixed array_search ( mixed needle, array haystack [, bool strict])
其中, needle 指定在数组中搜索的值; haystack 指定被搜索的数组; strict 为可选参数, 如果值为 true, 还将在数组中检查给定值的类型。
5.8 获取数组中最后一个元素
函数:array_pop( array )
array _pop()函数获取并返回数组的最后一个元素, 并将数组的长度减1,如果数组为空(或者不是数组)将返回null。
5.9 向数组中添加元素
int array_push (array array, mixed var[, mixed … ])
array_push()函数将数组当成一个栈, 将传入的变量压入该数组的末尾, 该数组的长度将增加入栈变量的数目, 返回数组新的元素总数。
<?php
$new = array('1','2','3');
$num = array_push($new, '4','5', '6');
echo $num.'<br>';
print_r($new);
?>
结果:
6
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
5.10 删除数组中重复的元素
array array_unique (array array)
array_unique()函数用于将值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名, 即删除数组中重复的元素。
第六章:PHP与Web页面交互
6.1 表单
6.1.1 form标签属性
属性 | 描述 |
---|---|
name | 表单名称 |
method | 表单的提交方式(GET或POST) |
action | 指向处理该表单页面的URL(相对位置或绝对位置) |
enctype | 设置表单内容的编码方式 |
target | 设置返回信息的显示方式 |
target属性值 | 描述 |
---|---|
_blank | 将返回信息显示在新的窗口 |
_parent | 将返回信息显示在父级窗口 |
_self | 将返回信息显示在当前窗口 |
_top | 将返回信息显示在顶级窗口 |
6.1.2 其它
关于表单的其他内容请自行寻找
6.2 PHP参数传递的常用方法
6.2.1 $_POST[]和$_GET[]全局变量
<?php
$user = $_POST["user"]; //获取名为user的文本框的内容
$user = $_GET["user"];
?>
6.2.2 $_SESSION[]变量
<?php
$user = $_SESSION["user"];
?>
使用$_SESSION[]传参的方法获取的变量值,保存之后任何页面都可以使用,但这种方法很耗费系统资源,建议读者慎重使用。
6.2.3 获取参数值
例子:
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<form method="post">
性别:
<input type = 'radio' value = '男' name = 'sex' checked />男
<input type = 'radio' value = '女' name = 'sex' />女
<input type="submit" name="submit" value="提交" />
</form>
<?php
if(isset($_POST['sex']))
{
echo '你的性别为:'.$_POST['sex'];
}
?>
</body>
</html>
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dLDEaMJh-1587956186477)(D:\Typora\保存\php\图片\1.png)]
点击"提交"后:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5g3JbXm-1587956186488)(D:\Typora\保存\php\图片\2.png)]
第七章:PHP与JavaScript交互
7.1 JavaScript基础
-
数据类型
数据类型 说明 字符串型 单个或多个字符 数值型 整数或浮点数 布尔型 true或false 对象型 对象 Null值 可以给变量赋null值来清除变量内容 Undefined 表示该变量尚未被赋值 -
变量声明与赋值
var i, j; //变量声明 var i=1; j=100; //赋值
-
注释
单行注释://
多行注释:/* */
-
函数
function 函数名 (参数) { 函数体; }
例:
<script language="javascript"> function cheng(a, b){ return a*b; } document.write(cheng(5,10)); </script>
-
条件语句
var form=99; if (form<60) { alert("不及格"); } else if(form>=60&&form<=89) { alert("良好"); } else {alert("优秀");}
-
循环
var number = 100; while(number--) { document.write(number); } for(var i=1;i<100;i++) { document.write(i); }
其它请参考菜鸟教程:JavaScript
第八章:PHP与MySQL
8.1 操作MySQL数据库
8.1.1 连接
函数:mysqli_connect(sever, username, password, dbname, port, socket)
参数 | 描述 |
---|---|
sever | MySQL服务器地址(IP地址) |
username | 用户名 |
password | 密码 |
dbname | 连接的数据库名称 |
port | MySQL服务器使用的端口号 |
socket | Unix域socket |
使用mysqli_connect函数,如果连接成功返回一个mysql连接标识,否则返回false。
8.1.2 选择数据库
-
方式一
$con = mysqli_connect('127.0.0.1','root','root','dbname');
-
方式二
$con = mysqli_connect('127.0.0.1','root','root'); if($con) { mysqli_select_db($con, 'dbname'); }
8.1.3 执行SQL语句
mysqli_query(link, query[, resultmode])
参数 | 描述 |
---|---|
link | mysql连接 |
query | sql语句 |
resultmode | 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个,mysqli_free_result()函数可以释放内存,两者配合使用)、MYSQLI_STORE_RESULT(默认) |
查询结果集请参考:函数大全
8.1.4 释放内存
$result = mysqli_query($connect, "select * from ……");
mysqli_free_result($result);
8.1.5 关闭连接
mysqli_close($connect)
ort, socket)**
参数 | 描述 |
---|---|
sever | MySQL服务器地址(IP地址) |
username | 用户名 |
password | 密码 |
dbname | 连接的数据库名称 |
port | MySQL服务器使用的端口号 |
socket | Unix域socket |
使用mysqli_connect函数,如果连接成功返回一个mysql连接标识,否则返回false。
8.1.2 选择数据库
-
方式一
$con = mysqli_connect('127.0.0.1','root','root','dbname');
-
方式二
$con = mysqli_connect('127.0.0.1','root','root'); if($con) { mysqli_select_db($con, 'dbname'); }
8.1.3 执行SQL语句
mysqli_query(link, query[, resultmode])
参数 | 描述 |
---|---|
link | mysql连接 |
query | sql语句 |
resultmode | 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个,mysqli_free_result()函数可以释放内存,两者配合使用)、MYSQLI_STORE_RESULT(默认) |
查询结果集请参考:函数大全
8.1.4 释放内存
$result = mysqli_query($connect, "select * from ……");
mysqli_free_result($result);
8.1.5 关闭连接
mysqli_close($connect)
转载:https://blog.csdn.net/qq_40760732/article/details/105785854