|
1、定义
字符串是有另个或多个字符组成的集合
字符可以是:①数字 ②字母 ③特殊字符 ④不可见字符(\n、\t、\r等等)
2、单引号和双引号的区别
①双引号:双引号中的内容是经过PHP的语法分析器解析过的,任何变量在双引号中都会被转换为它的值进行显示输出
②单引号:单引号中的内容是"所见即所得"的,无论有无变量,都会被当做普通字符串原样输出。
注意:在进行SQL查询之前,所有的字符串都必须加单引号,以避免可能的注入漏洞和SQL错误。
3、字符串连接
①字符串连接符"."
②字符串连接符无法实现大量简单字符串的拼接,PHP允许程序员在双引号中直接包含字符串变量
4、字符串操作
①去除字符串首位空格和特殊字符:
trim(string,charlist)参数描述string必需。规定要检查的字符串。charlist可选。规定要转换的字符串。如果省略该参数,则删除以下所有字符:
- "\0" - NULL
- "\t" - tab
- "\n" - new line
- "\x0B" - 纵向列表符
- "\r" - 回车
- " " - 普通空白字符
trim():两侧
ltrim():左侧
rtrim():右侧
运行结果:
原字符串为: @_@(:测试:)@_@
charlist为: (::)@_@
不设置charlist的删除结果:@_@(:测试:)@_@
设置charlist的删除结果:测试
②转义、还原字符串数据
1>手动:简单字符串
使用转义字符 "\" 或者使用addcslashes()方法对字符串进行还原
【1】转义字符
运行结果:
select * from t_book wbere bookname='人月神话'
【2】使用addcslashes()函数
运行结果:
原字符串:人月神话adda
手工转义后的字符串:\344\272\272\346\234\210\347\245\236\350\257\235adda
还原后的字符串:人月神话adda
2>自动:数据量大的字符串
使用addslashes()方法进行转义,然后使用stripslashes()方法进行还原
注意:所有数据在插入数据库之前,有必要用addslashes()方法进行转义,以免出现错误
运行结果:
原字符串:selet * from t_book where bookname='人月神话'
自动转义后的字符串:selet * from t_book where bookname=\'人月神话\'
还原后的字符串:selet * from t_book where bookname='人月神话'
③获取字符串长度
使用strlen()方法
注意:汉子占两个字节,其余字符占一个字节。
运行结果:
str的长度为:48
④截取指定字符串
使用substr()方法
注意:
1>下标是从0开始
2>substr()截取中文字符时,如果截取的字符串出现单数,就会出现中文乱码的情况,因为中文占两个字节。要解决这个问题,需要用substr()自定义一个方法。
实例:在web页面中,经常需要对超长文本进行部分显示,来保证页面的合理布局。
运行结果:
原字符串:
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
截取后字符串显示:
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快......
⑤比较字符串
1>按照字节进行比较
【1】strcmp()函数:区分大小写,网站登录的时候可以用次方法来检测大小写是否匹配。
定义和用法
strcmp() 函数比较两个字符串。
该函数返回:
- 0 - 如果两个字符串相等
- 0 - 如果 string1 大于 string2
语法
strcmp(string1,string2)参数描述string1必需。规定要比较的第一个字符串。string2必需。规定要比较的第二个字符串。
提示和注释
注释:该函数是二进制安全的,且对大小写敏感。
【2】strcasecmp()函数:不区分大小写,具体用法和strcmp()一样。
运行结果:
str1=php
str2=PHP
strcmp()函数比较结果:1
strcasecmp()函数比较结果:0
2>按照自然排序法进行比较:对字符串中的数字进行比较,将数字按照大小进行排序
【1】strnatcmp()函数:区分大小写
定义和用法
strnatcmp() 函数使用一种“自然”算法来比较两个字符串。
在自然算法中,数字 "2" 小于数字 "10"。在计算机排序中,"2" 大于 "10",这是因为 "2" 大于 "10" 的第一个数字。
该函数返回:
- 0 - 如果两个字符串相等
- 0 - 如果 string1 大于 string2
语法
strnatcmp(string1,string2)参数描述string1必需。规定要比较的第一个字符串。string2必需。规定要比较的第二个字符串。
提示和注释
注释:该函数对大小写敏感。
【2】strnatcasecmp()函数:不区分大小写,具体用法和strnatcmp()函数一样。
运行结果:
str1=php2?
str2=PHP2?
str3=PHP10?
strcmp(str2,str3)比较结果:1
strnatcmp(str2,str3)比较结果:-1
strnatcasecmp(str1,str3)比较结果:-1
3>指定从源字符串的位置开始比较:比较字符串中的前n个字符
【1】strncmp()函数:区分大小写
定义和用法
strncmp() 函数比较两个字符串。
该函数返回:
- 0 - 如果两个字符串相等
- 0 - 如果 string1 大于 string2
语法
strncmp(string1,string2,length)参数描述string1必需。规定要比较的第一个字符串。string2必需。规定要比较的第二个字符串。length必需。规定每个字符串用于比较的字符数。
提示和注释
注释:该函数是二进制安全的,且对大小写敏感。
【2】strncasecmp():不区分大小写,具体用法和strncmp()一样。
运行结果:
str1=i love china
str2=I lovE Web
strncmp(str1,str2,6)比较结果:1
strncasecmp(str1,str2,6)比较结果:0
⑥检测字符串
1>检索字符串中指定的关键字,获取一个字符串在另一个字符串中首次出现到后者末尾的子字符串,如果匹配成功返回剩余字符串,匹配不成功返回false。
【1】strstr()函数:区分大小写。
定义和用法
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。
语法
strstr(string,search)参数描述string必需。规定被搜索的字符串。search必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。
提示和注释
注释:该函数是二进制安全的。
注释:该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()。
【2】stristr()函数:不区分大小写,具体方法和strstr()函数类似。
2>检索字符串出现的次数:一把用于搜索引擎中。
substr_count():
语法
substr_count(string,substring,start,length)参数描述string必需。规定要检查的字符串。substring必需。规定要检索的字符串。start可选。规定在字符串中何处开始搜索。length可选。规定搜索的长度。 运行结果:
'词'出现的次数是:4
⑦替换字符串
1>用一个字符串替换原字符串的另一些字符,最常用的就是搜索引擎的关键字处理,如关键字描红(适用于模糊查询)等。
【1】str_replace()函数:区分大小写
str_replace(find,replace,string,count)参数描述find必需。规定要查找的值。replace必需。规定替换 find 中的值的值。string必需。规定被搜索的字符串。count可选。一个变量,对替换数进行计数。
提示和注释
注释:该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。
注释:该函数是二进制安全的。
【2】str_ireplace()函数:不区分大小写,具体用法类似str_replace()函数。
运行结果:
原字符串:周杰伦J-->1-->周杰伦J-->2-->周杰伦j-->3-->周杰伦j-->4-->周杰伦J
检测字符:周杰伦j
替换字符:Jay
str_replace($str2,$str3,$str1)执行结果:周杰伦J-->1-->周杰伦J-->2-->Jay-->3-->Jay-->4-->周杰伦J
str_ireplace($str2,$str3,$str1)执行结果:Jay-->1-->Jay-->2-->Jay-->3-->Jay-->4-->Jay
str_replace($str2,$str3,$str1,$num)执行结果:周杰伦J-->1-->周杰伦J-->2-->Jay-->3-->Jay-->4-->周杰伦J
str_replace($str2,$str3,$str1,$num)替换的个数是:2
2>对指定字符串中的部分字符进行替换:substr_replace()函数
定义和用法
substr_replace() 函数把字符串的一部分替换为另一个字符串。
语法
substr_replace(string,replacement,start,length)参数描述string必需。规定要检查的字符串。replacement必需。规定要插入的字符串。start必需。规定在字符串的何处开始替换。
- 正数 - 在第 start 个偏移量开始替换
- 负数 - 在从字符串结尾的第 start 个偏移量开始替换
- 0 - 在字符串中的第一个字符处开始替换
charlist可选。规定要替换多少个字符。
- 正数 - 被替换的字符串长度
- 负数 - 从字符串末端开始的被替换字符数
- 0 - 插入而非替换
提示和注释
注释:如果 start 是负数且 length 小于等于 start,则 length 为 0
运行结果:
原字符串:test the substr_replace()
substr($str,$str1,0,4)替换后的字符串:hehe the substr_replace()
⑧格式化字符串
1>字符串的格式化
2>数字的格式化(最常用)
number_format()函数:
定义和用法
number_format() 函数通过千位分组来格式化数字。
语法
number_format(number,decimals,decimalpoint,separator)参数描述number必需。要格式化的数字。
如果未设置其他参数,则数字会被格式化为不带小数点且以逗号 (,) 作为分隔符。
decimals可选。规定多少个小数。如果设置了该参数,则使用点号 (.) 作为小数点来格式化数字。decimalpoint可选。规定用作小数点的字符串。separator可选。规定用作千位分隔符的字符串。
仅使用该参数的第一个字符。比如 "xyz" 仅输出 "x"。
注释:如果设置了该参数,那么所有其他参数都是必需的。
提示和注释
注释:该函数支持一个、两个或四个参数(不是三个)
运行结果:
str=123.633
//注意,这里是124,格式化时四舍五入。
number_format($str)=124
number_format($str,2)=123.63
str1=111222333.444555
number_format($str1,2,'*','_')=111_222_333*44
⑨分割字符串:
explode():按照指定的规则对一个字符串进行分割,返回值是一个数组。
注意:数组下标从0开始
定义和用法
explode() 函数把字符串分割为数组。
语法
explode(separator,string,limit)参数描述separator必需。规定在哪里分割字符串。string必需。要分割的字符串。limit可选。规定所返回的数组元素的最大数目。说明
本函数返回由字符串组成的数组,其中的每个元素都是由 separator 作为边界点分割出来的子字符串。
separator 参数不能是空字符串。如果 separator 为空字符串(""),explode() 将返回 FALSE。如果 separator 所包含的值在 string 中找不到,那么 explode() 将返回包含 string 中单个元素的数组。
如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。此特性是 PHP 5.1.0 中新增的。
提示和注释
注释:参数 limit 是在 PHP 4.0.1 中加入的。
注释:由于历史原因,虽然 implode() 可以接收两种参数顺序,但是 explode() 不行。你必须保证 separator 参数在string 参数之前才行
运行结果:
第一种输出方法print_r($str_array)
Array ( [0] => 01 [1] => 12 [2] => 23 [3] => 34 [4] => 45 [5] => 56 [6] => 67 [7] => 78 [8] => 89 )
第二种输出方法echo $str_array[]
01 12 23 34 45 56 67 78 89
⑩合并字符串
implode()函数:将数组合并为一个字符串。
定义和用法
implode() 函数把数组元素组合为一个字符串。
语法
implode(separator,array)参数描述separator可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。array必需。要结合为字符串的数组。说明
虽然 separator 参数是可选的。但是为了向后兼容,推荐您使用使用两个参数。
提示和注释
注释:implode() 可以接收两种参数顺序。但是由于历史原因,explode() 是不行的。你必须保证 separator 参数在string 参数之前才行。
运行结果:
合并后的字符串:01@12@23@34@45@56@67@78@89
|
|