六、PHP中的字符串
1、访问字符串中的字符
字符串的三种定义方式:单引号、双引号和Heredoc方式
可以将字符串视为数组来处理。$test="hello"; $test{0}="h";推荐使用大括号,以免与数组混淆
2、字符串的格式化
字符串的格式化处理通常包括:去除字符串中多余的空格、大小写转换、加入和删除反斜杠和HTML格式化四部分
去除空格和其他符号
string trim(待处理的字符串,过滤字符串)
如果不指定过滤字符串,则默认去掉空格、Tab字符、换行符、回车符、字符串结束符和垂直制表符
可以使用“..”指定需要去除的一个范围,例如“a..f” 表示去掉a、b、c、d、e和f
只对字符串首尾字符进行过滤,即使指定了过滤字符串,字符串中间部分也不会参与过滤
string lrtim(待处理的字符串,过滤字符串)
去除字符串左边的空格和其他特殊字符
其他同trim()
string rtrim(待处理的字符串,过滤字符串),别名函数chop()
去除字符串右边的空格和其他特殊字符
其他同trim()
对字符串大小写的转换
strtolower(待处理的字符串)将指定字符串中的所有字符转换为小写
strtoupper(待处理的字符串)将指定字符串中的所有字符转换为大写
ucfirst(待处理的字符串)检查指定的字符串,如果指定字符串的第一个字符是字母,则将其转换为大写
ucword(待处理的字符串)将指定字符串中的每个单词的首字母转换为大写
加入和删除反斜杠
在将任何字符串保存到数据库中之前,应该使用addslashes()函数添加反斜杠;
在显示用户数据之前,应该调用stripslashes()函数去除反斜杠
addslashes(待处理的字符串)添加反斜杠
stripslashes(待处理的字符串)删除反斜杠
HTML格式化
nl2br(待处理的字符串)可以将字符串中的换行符转换成HTML中的标签"<br>",从而在浏览器中实现换行
htmlspecialchars(待处理的字符串,是否转换双引号和单引号,字符集)
可以使一些特殊的字符被当成普通的文本输出,而不会再进行HTML解析
第二个参数:默认只对双引号进行转换,ENT_COMPAT只转换双引号 ENT_QUOTES都转换
ENT_NOQUOTES 不进行转换
第三个参数:指定了转换时所使用的字符集,默认为ISO-8859-1
hemlentities(待处理的字符串,是否转换双引号和单引号,字符集)
功能同上,但可以转义更多的特殊字符
heml_entity_decode(待处理的字符串,是否转换双引号和单引号,字符集)
可以对显示字符串进行反向转换,转换后的字符串能够按HTML标签进行解析
strip_tags(待处理的字符串,允许保留的HTML标签)
去除所有的HTML和PHP标记
3、字符串的连接和分割
explode(分隔符,字符串,被分割的字符串片断的数量)按指定的分隔符将一个字符串分割
如果分隔符是字符串,函数会根据字符串中的每个字符来进行分割,而不会根据整个分割字符串来分割
implode(连接符,需要连接成字符串的数组)将一些字符串通过指定的连接符连接成一个字符串
join(连接符,需要连接成字符串的数组)功能同implode()
substr(字符串,开始位置,提取长度)从某个字符串中提取一部分子字符串
开始位置为负,将得到一个从原字符串尾部开始,长度为该负数绝对值的子字符串
提取长度为负,子字符串取到倒数第“length”个字符前
这个不难理解,-就表示从后面开始
strtok(字符串,分隔符)从指定字符串中取出一个字符串片段
如果分隔符是字符串,函数会根据字符串中的第一个字符来进行分割,而不会根据整个字符串来分割
在调用该函数对字符串进行连续分割时,只有第一个分割时需要指定参数str,第一个分割后,系统会自动
记录字符串及第一个分割后的指针位置,继续调用该函数,则会继续从该字符串指针的当前位置进行分割
。如果希望重置指针到字符串起始位置,只需将字符串重新作为参数传递给该函数即可。
split(分隔符,字符串,返回字符串个数)将一个字符串按指定的分隔符分解为多个子字符串
4、字符串的比较
可以使用==直接对字符串进行比较
strcmp(字符串1,字符串2)按字典顺序,排在后面的大。如果相等,返回0,如果str1大于str2,返回正数,否则负数
区分大小写
strcasecmp(字符串1,字符串2)同上,不区分大小写
strnatcmp(字符串1,字符串2)按自然顺序进行字符串比较,等于返回0,大于返回正数,小于返回负数,区分大小写
strnatcasecmp(字符串1,字符串2)按自然顺序进行比较,不区分大小写
5、字符串的查找和替换
strstr(被查找的字符串,要查找的关键字)在一个字符串中查找匹配的字符串或字符,如果查找到,则返回从str字符中该key开始到字符串结尾的子字符串,如果没有查到,则返回false,如果不止一个,则返回从第一个匹配到结 尾的子字符串
strisstr()功能同上,区别,该函数不区分大小写
strchr(被查找的字符串,要查找的关键字)在一个字符串中查找要匹配的子字符串或字符,该函数从字符串末端开始查找,如果找到一个,则返回从该key开始到字符串结尾的子字符串,如果多于一个,则返回从尾端开始的第一个匹配,如果没有匹配,则返回false
strpos(要查找的字符串,要查找的子字符串或字符,从原始字符串的第offset个字符开始查找)
如果找到一个,则返回位置,从0开始,如果不止一个,返回第一个,如果没有,返回flase
offset不能为负,否则无法开始查找
strrpos(要超找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
从字符串末端开始查找,如果不止一个,返回倒数第一个匹配
strripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
功能同strrpos(),区别不区分大小写
stripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
功能同strpos()区别不区分大小写
str_replace(被替换的字符串或数组,替换后的字符串或数组,源字符串或数组,被替换的次数)
searchreplacesubject
把subject中的search替换为replace
如果search是数组,replace是字符串,在replace会替换search数组中的所有元素
如果search和replace都是数组,在replace中的元素会替换search中对应的元素
如果search数组中的元素个数多余replace,则多余的search数组中的元素会被空字符串替换
substr_replace(被操作的原始字符串,用于替换的字符串,要被替换的原始字符串的起始位置,被替换的原始字符串 中字符的个数)用于在指定位置中查找和替换字符串中特定的子字符串
起始位置:如果为正,从头开始计算,如果为负,从尾开始计算
长度:如果为正,表示从start开始的连续length个字符被替换,
如果为负,表示从start开始到倒数第length个字符被替换
str_ireplace()功能同substr_replace(),但是该函数不区分大小写
6、其他常用字符串函数
strlen(字符串)用于计算指定字符串的长度
md5(字符串,标志)将一个字符串进行MD5算法加密
第二个参数如果为true,将返回一个16位的二进制数;如果为false,则返回一个32位的十六进制字符串,默认为false
七、PHP中的面向对象编程技术
1、对象的特性
封装:对象是封装的最基本单位,是以对象名封装的数据结构以及可施加在这些数据上的操作的集合。
就像一个盒子,我们不需要知道盒子里面有什么东西,只需知道它有哪些用途即可。
继承:PHP不支持多重继承,继承本质上就是代码重用,继承是指子类可以自动地拥有父类的全部特性,而无须从零开始构建。
多态:能够使用类的上下文来重新定义或改变类的行为。多态性使得对象能够根据所得到的参数决定具体执行哪个行为或方法,而对外却可以提供统一的接口。
2、类的结构
class 类名
{
//定义属性,使用关键字var
var $var1;
var $var2;
...
//定义方法,使用关键字function
function method1(...){...}
function method2(...){...}
...
} 不可以将一个类分开定义到多个PHP标记对中,更不可以分开定义到多个文件中。
3、类的实例化
使用关键字new来创建类的实例
$实例名=new 类名;
4、使用类的属性
若要使用类中定义的属性或方法,只需使用运算符"->"即可。如果在类定义时需要访问类内部自身定义的属性或方法,则需要使用$this指针。
一般来说,从类的外部直接访问类的属性存在一定的风险,为此PHP对于访问类属性提供了一些保护措施。__set(),__get(),当视图引用一个
类中不存在的属性时,就会调用这些方法进行相应的处理。