• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php基础总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

目录

期间看到的几篇有意思的博客

为什么 var_dump("1" == "1e0");的结果为true

PHP开发基础

PHP标记符(在PHP7中,仅支持标准标记和短标记)

标记类型 开始标记 结束标记 开启项
标准标记 <?php ?>
短标记 <? ?> short_open_tag=on
ASP式标记 <% %> asp_tags=on
Script标记 < script language="php" > < /script >

PHP注释

分类 风格 注释使用示例
单行注释 C++风格的单行注释“//” // 输出一句话
单行注释 Shell风格的注释“#” # 输出一句话
多行注释 C 风 格 的 多 行 注 释 “/……/” /
echo 'Hello, PHP';
echo 100 + 200;
/

PHP标识符

标识符:自定义一些符号来标记一些名称
标识符的定义需要遵循一定的规则,具体如下:

  • 标识符只能由字母、数字、下划线组成,且不能包含空格
  • 标识符只能以字母或下划线开头的任意长度的字符组成
  • 标识符区分大小写,类和关键词除外。
  • 如果标识符由多个单词组成,那么应使用下划线进行分隔

PHP关键字

关键字:是编程语言里预先定义好并赋予特殊含义的单词。

★表示从PHP5.3开始

●表示从PHP5.4开始

▲表示从PHP5.5开始

输出语句

echo:可将紧跟其后的一个或多个字符串、表达式、变量和 常量的值输出到页面中,多个数据之间使用逗号“,”分隔
print:与echo的用法相同,唯一的区别是print只能输出一个 值
print_r():PHP的内置函数,它可输出任意类型的数据,如字符串、数组等
var_dump():不仅可以打印一个或多个任意类型的数据,还可以获取数据的类型和元素个数

常量

常量定义使用define()函数,其基本格式如下:

define(\(name,\)value,\(case_insensitive); \)name:表示常量名称的字符串。
\(value:常量值,可以是字符串、整数或浮点数。 \)case_insensitive:其值为true或false,false为默认值。true表示该常量名称在使用时不区分大小写,false 表示要区分大小写。

defined()函数可用于测试常量是否已经定义:

  • defined("常量名称");
  • 若常量已经被定义,函数返回TRUE,否则返回FALSE。

constant()函数来获得常量值:

  • constant("常量名称");

预定义常量

变量

概念:变量就是保存可变数据的容器。
组成:在PHP中,变量名是由$和标识符组成。

PHP 变量规则:

变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头,不能以数字开头
变量名称只能包含字母、数字、字符和下划线
变量名称对大小写敏感

传值赋值:指直接将数据或变量的值复制放 到变量内存中。

引用赋值:是指将变量的地址传递给另一个 变量,使两个变量具有相同的内存地址。

由于PHP是一种弱语言,变量不需要事先声明,就可以直接进行赋值使用。
实现方式:

  • 传值赋值:变量默认总是传值赋值,将“=”左边的数据赋值为右边的变量(含直接赋值) 。
  • 引用赋值:所谓引用赋值就是在要赋值的变量前添加“&”符号。

数据类型

标量数据类型(整型)

整型可以由十进制、八进制和十六进制数指定

  • 在它前面加上“-”符号,可以表示负数。
  • 八进制数使用0~7表示,且数字前必须加上0
  • 十六进制数使用09与AF表示,数字前必须加上0x
标量数据类型(字符串型)

概念:字符串是由连续的字母、数字或字符组成的字符序列。
表示方式:分别为单引号、双引号、定界符三种语法结构。

  • 单引号括起来的字符串被原样输出

  • 双引号字符串中的变量被PHP解析为变量值,即字符串中的变量在输出时输出变量的值而不是变量名称。

  • 定界符字符串中的变量被PHP解析为变量值

    $变量 = <<<标识符

    字符串内容

    ...

    字符串内容

    标识符;

    $poetry =<<<ccc
    <br>春眠不觉晓
    <br>处处闻啼鸟
    <br>夜来风雨声
    <br>花落知多少
    ccc;
    echo $poetry;
    

标量数据类型(字符串型)

总结字符串各表示方式的区别:

  • 变量在双引号或定界符结构字符串中被解析,而在单引号中原样输出。
  • 单引号字符串只对“‘”和“\”进行转义;而双引号字符串支持多种转义字符。

检测数据类型

如果检测的值符合检测的数据类型,则返回true,否则返回false。

运算符、表达式和流程控制语句

算术运算符

名称 操作符 实例
幂运算(php5.6新增) ** \(a**\)b

赋值串运算符(+=、-=、*=、/=、.=、%=、**=同理)

名称 符号 实例 展开形式 意义
幂运算(php5.6新增) ** \(a**=\)b $a = \(a**\)b 将左边的值和右边的值幂运算,赋给左边

逻辑运算符

运算符 运算 范例 结果
xor 异或 $a xor $b \(a和\)b一个为true,一个为false,结果为true,否则为false

数据类型转换

数据类型转换是指将变量或值转换为另一种数据类型。

分为自动数据类型转换和强制类型转换

自动数据类型转换
  • 变量的数据类型由存入变量的数据来决定,即在存入不同
  • 类型数据时,变量的数据类型就自动发生转换。
  • 或者在使用不同类型的数据进行运算时,所有数据自动转
  • 换为一种类型进行运算。
数据类型的自动转换时遵循的规则
  • 布尔型数据和数值型数据在进行算术运算时,true被转换为整数1,false被转换为整数0。
  • 字符串型数据和数值型数据在进行算术运算时,如果字符串以数字开头,将被转换为相应的数字;如果字符串不是以数字开头,将被转换为整数0。
  • 在进行字符串连接运算时,整数、浮点数将被转换为字符串型数据,布尔值true将被转换为字符串 "1",布尔值false和NULL将被转换为空字符串""。
  • 在进行逻辑运算时,整数0、浮点数0.0、空字 符串""、字符串"0"、NULL以及空数组将被转换为布尔值false,其他数据将被转换为布尔值true。

强制类型转换

PHP支持3种方式转换数据类型,分别为使用类型名、 使用类型取值函数和设置变量类型转换。

使用类型名转换类型

使用类型取值函数

跳转语句和终止语句

break语句

break语句可以终止当前的循环,包括while、do…while 、for、foreach和switch在内的所有控制语句。

continue语句 在执行continue语句后,程序将结束本次循环的执行, 并开始下一轮循环的执行操作。

exit语句
exit语句的作用是终止整个PHP程序的执行,在exit语 句后的所有PHP代码都不会执行。

数组和字符串

数组构成:数组是由一个或多个数组元素组成的
数组元素:一每个数组元素由键(Key)和值(Value)构成
键:“键”为元素的识别名称,也被称为数组下标
值: “值”为元素的内容
映射: “键”和“值”之间存在一种对应关系,称之为映射
类型划分:根据键的数据类型,可以将数组划分为索引数组
和关联数组

索引数组

索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素。另外,索引数组的键名也可以自己指定。

关联数组

关联数组是指键名为字符串的数组。关联数组的“键”“是字符串或数值的混合,并与“值”之间具有一一对应的关系。

赋值方式

使用赋值方式定义数组,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。

赋值方式定义数组就是单独为数组元素赋值。 需要注意的是,赋值方式不能定义一个空数组

我的意见是先定义,后赋值。

短数组定义法

短数组定义法([])与array()语法结构相同,只需将array()替换为[]即可

二维数组

$str =

array (
"PHP类图书"=>array ("PHP从入门到精通","PHP 典型模块","PHP标准教程"),

"JAVA类图书"=>array ("a"=>"JAVA范例手册 ","b"=>"JAVA WEB范例宝典"),

"ASP类图书"=>array ("ASP从入门到精通 ",2=>"ASP范例宝典","ASP典型模块")

);

访问数组

数组定义完成后,若想要查看数组中某个具体的元素,则可以通过“数组名[键]”的方式获取。

遍历数组--foreach

//方式一
foreach (数组名称 as 键 => 值) 
{
	// 处理语句
}
//方式二
foreach (数组名称 as 值)
{
	// 处理语句
}

遍历数组--each

  • each()函数返回一个包含数组当前元素键/值对应的数组 ,并将数组指针指向下一个数组元素。
  • each()函数返回的数组包含4个元素,元素键依次为1、 value、0和key。1和value对应元素为原数组元素的值, 0和key对应元素为原数组元素的键。
  • 如果数组指针指向了数组末尾(最后一个元素之后),则 返回FALSE。

遍历数组--list

  • list()函数用于将数组中各个元素的值赋值给指定的变量
  • list()函数依次将下标为0、1、2…的数组元素赋值为指定的变量。
  • 如果数组中的元素没有这些下标,变量值为NULL,PHP会产生一个Notice错误信息。

遍历数组—list、each

<?php 
$array=
array(
    0 =>'PHP自学视频教程', 
    1 =>'JAVA自学视频教程', 
    2 =>'VB自学视频教程',
    3=>"VC自学视频教程"
); //遍历数组中的数据 while(list($name,$value)=each($array))
{ 
    //输出遍历结果 
    echo "$name=$value"."\n"; 
} 
?>

创建数组(返回值为数组)

range()函数创建一个包含指定范围的元素的数组。

array range( int low, int high , int step)
low	必需。规定数组元素的最小值。
high	必需。规定数组元素的最大值。
step	可选。规定元素之间的步进制。默认是 1。

array_combine()函数用两个数组创建一个新的数组,其中的一个数组元素为键名,另一个数组的元素为键值。

array array_combine( array keys, array values)
keys	必需。规定数组的键名。
values	必需。规定数组的键值。
注意:键名数组和键值数组的元素个数必须相同!

array_merge()函数将多个数组连接成一个新的数组

array array_merge(array1,array2,array3...)
array1	必需。规定数组。
array2	可选。规定数组。
array3	可选。规定数组。
后合并进来的数组,如果键名与之前合并的数组的键名相同,发生冲突,会覆盖之前对应的数组元素

array_fill()函数用给定的数量的值填充或建立一个数组

array array_fill( int start_index, int num, mixed value)
start_index	必需。规定返回数组的起始索引。
num	必需。规定填充的元素的数量,其值必须大于 0。
value	必需。规定用于填充数组的键值。

数组统计

count()函数用于对数组中的元素个数进行统计。

count(array,mode);
array	必需。规定要计数的数组。
mode	可选。规定函数的模式。可能的值:
0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。
返回值:函数返回数组中元素的数目。

max()函数用于计算数组中元素的最大值。

mixed max( array arr )
返回值:数组中元素的最大值

min()函数用于计算数组中元素的最小值。

mixed min( array arr )
返回值:数组中元素的最小值

array_sum()函数用于计算数组中所有值的和。

mixed array_sum( array arr )
返回值:数组中所有值的和

array_count_values()函数用于计算数组中元素出现次数。

mixed array_count_values( array arr )
返回值:数组,
arr数组中值为返回值数组的键名,
arr数组中值的出现次数为返回值数组的值。

数组指针

next():使数组指针指向下一个元素。 
prev():使数组指针指向前一个元素。
end():使数组指针指向最后一个元素。
reset():使数组指针指向第一个元素。
current():返回当前数组元素的值。
key():返回当前数组元素的键名。

数组和变量之间的转换

extract()函数使用数组定义一组变量。

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
该函数返回成功设置的变量数目。
$arr = array("name"=>"张三","sex"=>"男","age"=>20); extract($arr);//将数组元素定义在变量中 
echo $name;//输出变量值 
echo $sex;//输出变量值 echo $age;//输出变量值

int extract(array,extract_rules,prefix)
array	必需。规定要使用的数组。
extract_rules	可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。对不合法和冲突的键名的处理将根据此参数决定。
可能的值:
EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。
EXTR_SKIP - 如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID - 仅在不合法或数字变量名前加上前缀 prefix。
EXTR_IF_EXISTS - 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。
EXTR_PREFIX_IF_EXISTS - 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS - 将变量作为引用提取。导入的变量仍然引用了数组参数的值。
prefix	可选。如果 extract_rules 参数的值是 EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、 EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS,则 prefix 是必需的。 
该参数规定了前缀。前缀和数组键名之间会自动加上一个下划线。

compact()函数使用变量建立数组。

int compact (( mixed var1, mixed var2...])
var1	必需。可以是带有变量名的字符串,或者是一个变量数组。
var2,...	可选。可以是带有变量名的字符串,或者是一个变量数组。允许多个参数。
$a = "asp";//声明变量 $b = "php";//声明变量 $c = "jsp";//声明变量 $result = compact("a","b","c");//生成数组
Array([a]=>asp [b]=>php [c]=>jsp)

数组检索函数

array_keys()函数返回包含数组中所有键名的一个新数组。

array array_keys(array,value,strict)
array	必需。规定数组。
value	可选。您可以指定键值,然后只有该键值对应的键名会被返回。
strict	可选。与 value 参数一起使用。可能的值:
true - 返回带有指定键值的键名。依赖类型,数字5 与字符串"5"是不同的。
false - 默认值。不依赖类型,数字5与字符串"5"是相同的。
被返回的数组将使用数值键,键名从0开始且以1递增,键值为数组array中所有的键名。

$array = array (0 => 100, "php" => "图书"); 
$arr1 = array_keys($array); 
$array = array ("php", "asp", "java", "php"); 
$arr2 = array_keys($array, "php");

array(2){[0]=>int(0) [1]=>string(3)"php"}
array(2){[0]=>int(0) [1]=>int(3)}

array_values()函数获取数组中所有的值。

array array_values ( array input )
$array = array ("手册" => "php函数手册", "php基础应用", "php" => "php函数手册", "php基础应用", "php典型案例");
$result = array_values($array);
被返回的数组将使用数值键,键名从0开始且以1递增,键值为数组input中所有的值。

in_array ()函数在数组中查找某个值。

bool in_array ( mixed needle, array array [, bool strict])
needle	必需。规定要在数组搜索的值。
array	必需。规定要搜索的数组。
strict	可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。
$array = array("Php", "asP", "jAva", "html"); if(in_array("php", $array)){ echo "php in array"; } if(in_array("jAva", $array)){ echo " jAva in array"; }

array_search ()函数在数组中搜索某个键值,并返回对应的键名。

mixed array_search ( mixed needle, array array [, bool strict])
needle	必需。规定在数组中搜索的键值。
array	必需。规定被搜索的数组。
strict	可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:
true
false - 默认
如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)。

$arr = array ("asp", "php", "60");
if(array_search (60, $arr))
{ 
	echo "60在数组1中 <br />";
} 
if(array_search (60, $arr, true))
{ 
	echo "60在数组2中 <br />";
}

array_key_exists ()函数在数组中查找某个键名,如果键名存在则返回 true,如果键名不存在则返回 false。

提示:请记住,如果您指定数组的时候省略了键名,将会生成从 0 开始并以 1 递增的整数键名。

bool array_key_exists ( mixed key, array search)
key	必需。规定键名。
array	必需。规定数组。
$array = array("php" => 58, "ajax" => 54);
if (array_key_exists("php", $array)) 
{ 
	echo "php在数组中";
}

array_unique ()函数删除数组中重复的数。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。

注意:被保留的数组将保持第一个数组项的键名类型。

array array_unique ( array array)
$arr_int = array ("PHP","JAVA","ASP","PHP","ASP");
$result=array_unique($arr_int);
print_r($result);

数组排序

  • sort():根据元素值升序排序,排序后元 素的下标按顺序为0、1、2…
  • asort():根据元素值升序排序,保持原 有的键值。
  • rsort():sort()的逆序。
  • arsort():asort的逆序。
  • ksort():根据键升序排序,保持键值对。
  • krsort():ksort的逆序。
  • natsort():对值按照“自然排序”升序,保持键值对。
  • natcasesort():不区分大小写。

sort()函数根据数组元素值以升序进行排序。

注:排序后的数组赋予新的“整数”键名,键名从0开始且以1递增,键值同原数组键值。

bool sort( array &array , int sortingtype )
array	必需。规定要进行排序的数组。
sortingtype	可选。规定如何排列数组的元素/项目。可能的值:
0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
$array = array("a"=>"asp", "p"=>"php", "j"=>"jsp");
sort($array);
print_r($array);

asort()函数根据数组元素值以升序进行排序。

注:排序后的数组元素保持原有的“键值”,键值同原数组键值,针对原先数组进行键值对顺序调换。

bool asort( array &array [, int sort_flags] )
$array = array("a"=>"asp", "p"=>"php", "j"=>"jsp");
asort($array);
print_r($array);

ksort()函数根据数组元素的“键名”以升序排序。

注:排序后的数组元素保持原有的“键值”

bool ksort ( array &array [, int sortingtype])
array	必需。规定要进行排序的数组。
sortingtype	可选。规定如何排列数组的元素/项目。可能的值:
0 = SORT_REGULAR -默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

$array = array("a"=>"asp", "p"=>"php", "j"=>"jsp");
ksort($array);
print_r($array);

数组与数据结构

int array_push ( array array, mixed var1 , mixed var2...)函数向数组尾部插入一个或多个元素。
注意:即使您的数组有字符串键名,您所添加的元素将是数字键名。
array	必需。规定一个数组。
var1	必需。规定要添加的值。
var2	可选。规定要添加的值。
mixed array_pop ( array array)函数删除数组中的最后一个元素。
mixed array_shift ( array array) 函数用于删除数组中的第一个元素,并返回被删除的元素键值。
注释:如果键名是数字的,所有元素都将获得新的键名,从 0 开始,并以 1 递增。
int array_unshift ( array array, mixed value1 [, mixed value2...]) 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
注释:数值键名将从 0 开始,以 1 递增。字符串键名将保持不变。
array	必需。规定数组。
value1	必需。规定插入的值。
value2	可选。规定插入的值。

数组集合

array_diff()函数用于比较两个(或更多个)数组的键值,并返回差集

array array_diff ( array array1, array array2 [, array array3...])
array1	必需。与其他数组进行比较的第一个数组。
array2	必需。与第一个数组进行比较的数组。
array3,...	可选。与第一个数组进行比较的其他数组。
该函数比较两个(或更多个)数组的键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。

array_intersect ()函数用于比较两个(或更多个)数组的键值,并返回交集

array array_intersect ( array array1, array array2 [, array array3...])
array1	必需。与其他数组进行比较的第一个数组。
array2	必需。与第一个数组进行比较的数组。
array3,...	可选。与第一个数组进行比较的其他数组。
该函数比较两个(或更多个)数组的键值,并返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值。

array_reverse()函数将反转数组中的元素

array array_reverse(array,preserve)
array	必需。规定数组。
preserve	可选。规定是否保留原始数组的键名。
如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。 
可能的值:
true
false

<?php
    $a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
    print_r(array_reverse($a));
?>
Array ( [c] => Toyota [b] => BMW [a] => Volvo )
返回值:是经过反转的数组,原先数组不受影响。

isset()函数用于检测变量是否已设置并且非 NULL。

bool isset ( mixed var [, mixed var [, ...]])
如果一次传入多个参数,那么 isset() 只有在全部参数都被设置时返回 TRUE,计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

返回值: 
若变量不存在则返回 FALSE 
若变量存在且其值为NULL,也返回 FALSE 
若变量存在且值不为NULL,则返回 TURE

unset()函数用于销毁指定变量

void unset ( mixed $var [, mixed $... ] )
没有返回值。

字符串与数组转换

字符串作为数组访问

分割字符串

explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。

array explode ( string $separator , string $str [, int $limit ] )
separator	必需。规定在哪里分割字符串。
string	必需。要分割的字符串。
limit	可选。规定所返回的数组元素的数目。
可能的值:
大于 0 - 返回包含最多 limit 个元素的数组
小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
0 - 会被当做 1, 返回包含一个元素的数组

$fish =  'Bass, Carp, Pike, Flounder'; $fish_list = explode(',', $fish); print "The second fish is $fish_list[1]";

合成字符串

implode() 函数返回一个由数组元素组合成的字符串。

string implode(separator,array)
separator	可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。
array	必需。要组合为字符串的数组。

<?php
    $arr = array('Hello','World!','Beautiful','Day!');
    echo implode(" ",$arr);
?>

Hello World! Beautiful Day!

转义、还原字符串

手动转义、还原字符串

echo ‘select * from tb_book where bookname=\’PHP自学视频教程\’’

自动转义字符串
string addslashes ( string $str )

$str = "Is your name O'reilly?"; 
echo addslashes($str);

自动还原字符串
string stripslashes ( string $str )

$str = "Is your name O\'reilly?"; 
echo stripslashes($str);

获取字符串长度

int strlen ( string $string )

在utf-8下,汉字占3个字符,其它情况下2个字符

数字、英文、小数点、下划线和空格各占一个字符。

截取字符串

substr() 函数返回字符串的一部分。

string substr ( string $string , int $start, int $length)
string	必需。规定要返回其中一部分的字符串。
start	必需。规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始
length	可选。规定要返回的字符串长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回
负数 - 从字符串末端返回

string mb_substr ( string $str , int $start [, int $length
[, string $encoding ]] )
<?php 
    $str="PHP自学视频教程"; 
    echo mb_substr($str, 0, 5, 'UTF-8'); 
?>

比较字符串

按字节比较

int strcmp ( string $string1 , string $string2 )
string1	必需。规定要比较的第一个字符串。
string2	必需。规定要比较的第二个字符串。

返回值:	该函数返回:
0 - 如果两个字符串相等
<0 - 如果 string1 小于 string2
>0 - 如果 string1 大于 string2

int strcasecmp ( string $str1 , string $str2 )
注:strcmp区分大小写,strcasecmp不区分大小写

按自然排序法比较

int strnatcmp ( string $str1 , string $str2 )
<?php
    $str1="str2.jpg";    
    $str2="str10.jpg";    
    echo strcmp($str1, $str2);    
    echo strnatcmp($str1, $str2);
?>

按指定源字符串的位置比较

int strncmp ( string $str1 , string $str2 , int len)
<?php
$str1="I like PHP!";    
$str2=”i like my student!";    
echo strncmp($str1, $str2, 6);
?>

检索字符串

strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及该字符串之后的剩余部分,否则返回 FALSE。

string strstr(string,search,before_search)
string	必需。规定被搜索的字符串。
search	必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。
before_search	可选。一个默认值为 "false" 的布尔值。如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。
<?php
    $email  = '[email protected]';    
    $domain = strstr($email, '@');    
    echo $domain; 
?>

substr_count() 函数计算子串在字符串中出现的次数。
注意:

子串是区分大小写的。
该函数不计数重叠的子串 。
如果 start 参数加上 length 参数大于字符串长度,该函数则生成一个警告。

string substr_count(string,substring,start,length)
string	必需。规定要检查的字符串。
substring	必需。规定要检索的字符串。
start	可选。规定在字符串中何处开始搜索。
length	可选。规定搜索的长度。
返回值:子串在字符串中出现的次数。

strtok() 函数把字符串分割为更小的字符串(标记)。

string strtok(string,split)
参数	描述
string	必需。规定要分割的字符串。
split	必需。规定一个或多个分割字符。
<?php
    $first_token = strtok('/something', '/');
    $second_token = strtok('/');
    var_dump($first_token, $second_token);
?>
运行结果:
Hello
world.
Beautiful
day
today.

<?php
    $string = "Hello world. Beautiful day today.";
    $token = strtok($string, " ");
    while ($token != false)
    {
        echo "$token<br>";
        $token = strtok(" ");
    } 
?>
运行结果:
string(9) "something" bool(false)

替换字符串

str_replace() 函数替换字符串中的一些字符(区分大小写)。

该函数必须遵循下列规则:

  • 如果搜索的字符串是一个数组,那么它将返回一个数组。
  • 如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
  • 如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。
  • 如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。

注意:

该函数是区分大小写的。请使用 str_ireplace() 函数执行不区分大小写的搜索。

mixed str_replace(find,replace,string,count)
参数	描述
find	必需。规定要查找的值。
replace	必需。规定替换 find 中的值的值。
string	必需。规定被搜索的字符串。
count	可选。一个变量,对替换数进行计数。

$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr,$i));
echo "<br>" . "Replacements: $i";
运行结果:
Array ( [0] => blue [1] => pink [2] => green [3] => yellow ) 
Replacements: 1

substr_replace() 函数把字符串的一部分替换为另一个字符串。

注意:如果 start 参数是负数且 length 小于或者等于 start,则 length 为 0。

mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )
string	必需。规定要检查的字符串。
replacement	必需。规定要插入的字符串。
start	必需。规定在字符串的何处开始替换。
    正数 - 在字符串的指定位置开始
    负数 - 在从字符串结尾的指定位置开始
    0 - 在字符串中的第一个字符处开始
length	可选。规定要替换多少个字符。默认是与字符串长度相同。
    正数 - 被替换的字符串长度
    负数 - 从字符串末端开始的被替换字符数
    0 - 插入而非替换
    
$credit_card = '4111 1111 1111 1111';
print substr_replace($credit_card, 'xxxx ', 0, strlen($credit_card)-4);


去掉字符串首尾空格和特殊字符

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

trim(string,charlist)
参数	描述
string	必需。规定要检查的字符串。
charlist	可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
    "\0" - NULL
    "\t" - 制表符
    "\n" - 换行
    "\x0B" - 垂直制表符
    "\r" - 回车
    " " - 空格

ltrim() 函数移除字符串左侧的空白字符或其他预定义字符。

ltrim(string,charlist)
参数	描述
string	必需。规定要检查的字符串。
charlist	可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
    "\0" - NULL
    "\t" - 制表符
    "\n" - 换行
    "\x0B" - 垂直制表符
    "\r" - 回车
    " " - 空格

rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。

rtrim(string,charlist)
参数	描述
string	必需。规定要检查的字符串。
charlist	可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
    "\0" - NULL
    "\t" - 制表符
    "\n" - 换行
    "\x0B" - 垂直制表符
    "\r" - 回车
    " " - 空格

字符串与HTML转换

htmlentities() 函数把字符转换为 HTML 实体。

htmlentities(string,flags,character-set,double_encode)
参数	描述
string	必需。规定要转换的字符串。
flags	可选。规定如何处理引号、无效的编码以及使用哪种文档类型。
        可用的引号类型:
        ENT_COMPAT - 默认。仅编码双引号。
        ENT_QUOTES - 编码双引号和单引号。
        ENT_NOQUOTES - 不编码任何引号。
        无效的编码:
        ENT_IGNORE - 忽略无效的编码,而不是让函数返回一个空的字符串。应尽量避免,因为这可能对安全性有影响。
        ENT_SUBSTITUTE - 把无效的编码替代成一个指定的带有 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD; 的字符,而不是返回一个空的字符串。
        ENT_DISALLOWED - 把指定文档类型中的无效代码点替代成 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD;。
        规定使用的文档类型的附加 flags:
        ENT_HTML401 - 默认。作为 HTML 4.01 处理代码。
        ENT_HTML5 - 作为 HTML 5 处理代码。
        ENT_XML1 - 作为 XML 1 处理代码。
        ENT_XHTML - 作为 XHTML 处理代码。
character-set	可选。一个规定了要使用的字符集的字符串。
                允许的值:
                UTF-8 - 默认。ASCII 兼容多字节的 8 位 Unicode
                ISO-8859-1 - 西欧
                ISO-8859-15 - 西欧(加入欧元符号 + ISO-8859-1 中丢失的法语和芬兰语字母)
                cp866 - DOS 专用 Cyrillic 字符集
                cp1251 - Windows 专用 Cyrillic 字符集
                cp1252 - Windows 专用西欧字符集
                KOI8-R - 俄语
                BIG5 - 繁体中文,主要在 台@@湾 使用
                GB2312 - 简体中文,国家标准字符集
                BIG5-HKSCS - 带香港扩展的 Big5
                Shift_JIS - 日语
                EUC-JP - 日语
                MacRoman - Mac 操作系统使用的字符集
                注释:在 PHP 5.4 之前的版本,无法被识别的字符集将被忽略并由 ISO-8859-1 替代。自 PHP 5.4 起,无法被识别的字符集将被忽略并由 UTF-8 替代。
double_encode	可选。一个规定了是否编码已存在的 HTML 实体的布尔值。
                TRUE - 默认。将对每个实体进行转换。
                FALSE - 不会对已存在的 HTML 实体进行编码。

反转字符串

string strrev ( string $string )

print strrev('This is not a palindrome.');
运行结果:
emordnilap a ton si sihT

重复字符串

string str_repeat ( string $str , int $times )
$str:重复字符串
$times:重复次数

字符串小写化

string strtolower ( string $string )
<?php 
    $str = "Mary Had A Little Lamb and She LOVED It So";    
    $str = strtolower($str);    
    echo $str; 
?>

字符串大写化

string strtoupper ( string $string )
<?php 
    $str = "Mary Had A Little Lamb and She LOVED It So";    
    $str = strtoupper($str);    
    echo $str; 
?>

ucfirst() 函数把字符串中的首字符转换为大写。

string ucfirst ( string $string )

ucwords() 函数把字符串中每个单词的首字符转换为大写。

string ucwords ( string $string )

chr() 函数从指定 ASCII 值返回字符。

ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置 0,十六进制值被定义为带前置 0x。

string chr ( int $ascii ) 
参数	描述
ascii	必需。ASCII 值。

ord() 函数返回字符串中第一个字符的 ASCII 值。

string ord ( string $string )

str_pad()把字符串填充为新的长度。

string str_pad(string,length,pad_string,pad_type)
参数	描述
string	必需。规定要填充的字符串。
length	必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。
pad_string	可选。规定供填充使用的字符串。默认是空白。
pad_type	可选。规定填充字符串的哪边。
可能的值:
STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充字符串的左侧。
STR_PAD_RIGHT - 填充字符串的右侧。这是默认的。

md5() 函数计算字符串的 MD5 散列。

string md5(string,raw)
参数	描述
string	必需。规定要计算的字符串。
raw	可选。规定十六进制或二进制输出格式:
TRUE - 原始 16 字符二进制格式
FALSE - 默认。32 字符十六进制数

函数

自定义函数

PHP中的函数

  • 系统的内置函数
  • 自定义函数
  • 变量函数

参数传递方式

  • 按值传递

    function example( $m ){ }
    
    
  • 按引用传递

    function example( &$m ){ }
    
    
  • 默认参数

function values($price,$tax="")
{ 
    $price=$price+($price*$tax); 
    echo "价格:$price<br>"; 
} 
values(100,0.25);        
values(100); 

通常函数将返回值传递给调用者的方式是使用return语句。

变量的作用域

全局变量
即被定义在所有函数以外的变量,其作用域是整个PHP 文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键词声明,或者通过使用全局数组$globals进行访问
局部变量
即在函数的内部定义的变量,这些变量只限于在函数内部使用,在函数外部不能被使用
静态变量
能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用关键字static来 声明变量,需要把关键字static放在要定义的变量之前

文件包含语句

作用:在程序开发中,会涉及到多个PHP文件。为此,PHP提
供了包含语句,可以从另一个文件中将代码包含进来。
好处:不仅可以提高代码的重用性,还可以提高代码的维护和
更新的效率。

  • include

    include格式如下:
    include '文件路径';“文件路径”指的是被包含文件所在的绝对路径或相对路径。
    在相对路径中,“./”表示当前目录,“../”表示当前目录的上级目录。

  • require

  • include_once

  • require_once

require语句与include语句的区别:

在包含文件时,如果没有找到文件,include语句会发生警告信息 ,程序继续运行;而require语句会发生致命错误,程序停止运行 。

require()语句一般放在PHP脚本页面的最前面,PHP在执行前, 就先读入require()引入的文件,文件的内容会变成此脚本的一部分 ,一旦出现错误,则立即退出程序。

include()语句一般在用到时才引入,所以通常是放在流程控制的处 理区段中,PHP脚本在执行到它时,才会将文件包含进来。

即require()是预加载机制,位置在脚本最前面,一开始就引入所有 可能用到的文件;include()是即用即加载,位置灵活。

require_once语句的区别:
虽然include_once、require_once语句,和include、require的作用几乎相同,但是不同的是带“_once”的语句会先检查要包含的文件是否已经被包含过,避免了同一文件被重复包含的情况。

PHP与Web页面交互

服务器端获取数据的其他方法

全局变量\(_REQUEST默认情况下包含了\)_GET、\(_POST和\)_COOKIE之中的数据。

不管用GET还是POST,两种方式提交的参
数均可用“$_ REQUEST ['参数名']”获得
参数值。

$_SERVER[ ](超)全局变量 
数组元素 说明 
$_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的IP地址 
$_SERVER['SERVER_NAME'] 当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称由那个虚拟主 机所设置的值决定 
$_SERVER['REQUEST_METHOD'] 访问页面时的请求方法。例如:“GET”、 “HEAD”、“POST”、“PUT”。如果请求 的方式是HEAD,PHP脚本将在送出头信息后中 止(这意味着在产生任何输出后,不再有输出缓 冲) 
$_SERVER['REMOTE_ADDR'] 正在浏览当前页面用户的IP地址 
$_SERVER['REMOTE_HOST'] 正在浏览当前页面用户的主机名。反向域名解析 基于该用户的REMOTE_ADDR
$_SERVER['REMOTE_PORT'] 用户连接到服务器时所使用的端口
$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径名。注意:如果脚 本在CLI中被执行,作为相对路径,如file.php 或者../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径
$_SERVER['SERVER_PORT'] 服务器所使用的端口,默认为“80”。如果 使用SSL安全连接,则这个值为用户设置的 HTTP端口
$_SERVER['SERVER_SIGNATURE'] 包含服务器版本和虚拟主机名的字符串
$_SERVER['DOCUMENT_ROOT'] 当前运行脚本所在的文档根目录,在服务器 配置文件中定义

上传文件相关配置

在php.ini中,定位到File Uploads项,完成 对上传相关选项的设置。 上传相关选项的含义如下: file_uploads:如果值是on,说明服务器支持文件上传;如果为off,则不支持。一般默认是支持的。
upload_tmp_dir:上传文件临时目录。
upload_max_filesize:服务器允许上传文件的最大值,以MB为单位。

全局变量$_FILES

元素名  说明 
$_FILES['filename']['name'] 存储上传文件的文件名。如text.txt、 title.jpg等 
$_FILES['filename']['size'] 存储文件大小,单位为字节 $_FILES['filename']['tmp_name'] 存储文件在临时目录中使用的文件名。 因为文件在上传时,首先要将其以临时文件的身份保存在临时目录中 
$_FILES['filename']['type'] 存储上传文件的MIME类型,MIME类 型规定各种文件格式的类型。每种 MIME类型都是由“/”分隔的主类型和 子类型组成的。例如:“image/gif”,主类型为“图像”,子类型为GIF格式的文件,“text/html”代表HTML格式 的文本文件 
$_FILES['filename']['error'] 存储了上传文件的结果。如果返回0, 则说明文件上传成功

bool is_uploaded_file ( string filename )
bool move_uploaded_file ( string filename, string destination )

上传文件的form表单,必须有enctype属性

enctype="multipart/form-data"

Ajax概述

AJAX是Asynchronous JavaScript And XML的缩写,即异
步JavaScript和XML。
不使用 AJAX,若要更新网页内容,必须重新从服务器加载
整个网页;
使用AJAX,可以异步在后台与服务器进行数据交换,并使
用服务器响应来更新部分网页。

XMLHttpRequest对象

AJAX使用JavaScript的XMLHttpRequest对象与服务器交互,所以使用AJAX处理网页请求主要包含创建XMLHttpRequest对象、发送请求、处理响应等

创建一个跨浏览器的 XMLHttpRequest对象
if (window.XMLHttpRequest) 
{   //Mozilla、Safari等浏览器 
	http_request = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) 
{   //IE浏览器 
    try 
    { 
        http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
        try 
        { 
        	http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch (e) {} 
    } 
}

XMLHttpRequest对象的常用方法

open("method","URL"[,asyncFlag[,"userName"[, "password"]]])
send(content)
setRequestHeader("label", "value")
abort() getAllResponseHeaders()

XMLHttpRequest对象的常用属性

属 性 说 明
onreadystatechange 每次状态改变都会触发这个事件处理器, 通常会调用一个JavaScript函数 readyState 请求的状态。

responseText 服务器的响应,表示为字符串

responseXML 服务器的响应,表示为XML。这个对象可以解析为一个DOM对象

status 返回服务器的HTTP状态码

statusText 返回HTTP状态码对应的文本

XMLHttpRequest对象与服务器交互

Ajax与服务器的交互主要包括3个步骤:
(1)初始化XMLHttpRequest对象
(2)设置请求状态和返回处理函数

xmlobj.onreadystatechange=function_name;

(3)发送HTTP请求
xmlobj.open(send_method,url,flag);

xmlobj.send();

处理响应函数

function function_name()
{
    if (xmlhttp.readyState===4 && xmlhttp.status===200)
    {	
        //将处理结果显示在HTML页面中
        document.getElementById("nicknews").innerHTML=xmlhttp.responseText;
    }
}

PHP操作MySQL数据库

PHP操作MySQL数据库的方法

连接MySQL服务器

mysqli扩展提供了mysqli_connect()函数实现与MySQL数据库的连接

mysqli mysqli_connect ( string server , string username , string password , string dbname , int port , string socket )

选择MySQL数据库

bool mysqli_select_db ( mysqli link, string dbname )

执行SQL语句

mixed mysqli_query( mysqli link, string query , int resultmode )

将结果集返回到数组中

array mysqli_fetch_array ( resource result [, int result_type] )
MYSQL_ASSOC - 关联数组
MYSQL_NUM - 数字数组
MYSQL_BOTH - 默认。同时产生关联和数字数组

从结果集中获取一行作为对象 从结果集中获取一行作为枚举数组

mixed mysqli_fetch_row ( resource result )

从结果集中获取一行作为关联数组

mixed mysqli_fetch_assoc ( resource result )

获取查询结果集中的记录数

释放内存

void mysqli_free_result(resource result);

关闭连接

bool mysqli_close ( mysqli link )

连接与关闭MySQL服务器的最佳时机

会话控制

了解Session

SESSION通常是从注册进入系统到注销退出系统之间所经过的时间。

  • 通过SESSION来控制用户对页面的访问权限。
  • 防止非法用户绕过系统登录直接进入系统。
启动Session

启动Session使用的是session_start()函数。
bool session_start(void);

注册Session

会话变量启动后,全部被保存在全局数组$_SESSION[]中。

使用Session

将各种类型的数据 添加到Session中, 必须应用全局数组 $_ SESSION[]。

删除Session
  • 删除单个会话

    <?php unset ( $_SESSION['name'] ) ; ?>
    
    
  • 删除多个会话

    <?php session_unset(); ?>
    <?php $_SESSION = array();  ?>
    
    
  • 销毁Session

<?php session_destroy(); ?>

Cookie的操作

了解Cookie

Cookie文本文件的格式如下:
用户名@网站地址[数字].txt
Cookie常用于以下3个方面:

1.记录访客的某些信息。

2.在页面之间传递变量。

3.将所查看的Internet页存储在Cookies临时文件夹中,这样可以提高以后浏览的速度。

创建Cookie

创建Cookie应用的是setcookie()函数。

bool setcookie(string name[,string value[,int expire [,string path[,string domain[,int secure]]]]])

读取Cookie

在PHP中应用全局数组$_COOKIE[]读取客户端Cookie的值。
应用isset()函数检测Cookie变量

删除Cookie

方法有两种:
一种是使用setcookie()函数删除,
另一种是 在客户端手动删除Cookie。

创建Cookie数组
setcookie(string name[下标],string value,int expire,string path,string domain,int secure)

Cookie与Session的比较

Session与Cookie最大的区别是:

1)Session是将信息保存在服务器上,并通过一个Session ID来传递客户端的信息,服务器在接收到Session ID后根据这 个ID来提供相关的Session信息资源;Cookie是将所有的信息 以文本文件的形式保存在客户端,并由浏览器进行管理和维护。

2)Session为服务器存储,远程用户没办法修改Session文件内容。而Cookie为客户端存储,所以Session要比Cookie安全得多。

传统Session、Cookie有以下明显缺点:
1)Cookie的安全性不


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP Ajax 跨域问题最佳解决方案发布时间:2022-07-10
下一篇:
黄聪:PHP转换网址相对路径到绝对路径的一种方法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap