php基础学习大全

文章目录

第一章:PHP语言基础

1.1 PHP的标记风格

  • XML风格

    <?php
        echo "XML风格的标记";
    ?>
    

    推荐使用此种标记,服务器不能禁用,在XML和XHTML中都可以使用

  • 脚本风格

    <script language="php">
        echo "脚本风格的标记";
    </script>
    
  • 简短风格

    <? echo "简短风格标记"; ?>
    
  • ASP风格

    <%
        echo "ASP风格标记";
    %>
    

    简短风格和ASP风格标记的使用,需要对php.ini进行配置,将里面的short_open_tagasp_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_VERSIONPHP程序的版本
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’,这没有问题。第二个输出的是’$$a’的值,首先,$a的值为’b’,$$a将$a用b替换,就变成了$b,所以$$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.jpg

    strrchr()函数与其正好相反, 该函数是从字符串后序的位置开始检索子串(子字符串)的,结果与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表单的提交方式(GETPOST
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)

参数描述
severMySQL服务器地址(IP地址)
username用户名
password密码
dbname连接的数据库名称
portMySQL服务器使用的端口号
socketUnix域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])

参数描述
linkmysql连接
querysql语句
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)**

参数描述
severMySQL服务器地址(IP地址)
username用户名
password密码
dbname连接的数据库名称
portMySQL服务器使用的端口号
socketUnix域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])

参数描述
linkmysql连接
querysql语句
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)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值