1、定义
字符串是有另个或多个字符组成的集合
字符可以是:①数字 ②字母 ③特殊字符 ④不可见字符(\n、\t、\r等等)
2、单引号和双引号的区别
①双引号:双引号中的内容是经过PHP的语法分析器解析过的,任何变量在双引号中都会被转换为它的值进行显示输出
②单引号:单引号中的内容是"所见即所得"的,无论有无变量,都会被当做普通字符串原样输出。
注意:在进行SQL查询之前,所有的字符串都必须加单引号,以避免可能的注入漏洞和SQL错误。
3、字符串连接
①字符串连接符"."
②字符串连接符无法实现大量简单字符串的拼接,PHP允许程序员在双引号中直接包含字符串变量
123456 | <?php $name = 'Jormin' ; $web = 'ww.Jormin' ; //注意:在$name和$web之间加入字符串后,$web前面的字符串都不显示,包括$name echo "$name$web.com" ; ?> |
4、字符串操作
①去除字符串首位空格和特殊字符:
trim(string,charlist)
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
charlist | 可选。规定要转换的字符串。如果省略该参数,则删除以下所有字符:
|
trim():两侧
ltrim():左侧
rtrim():右侧
12345678 | <?php $str = "\r\t\0\0@_@(:测试:)@_@" ; $charlist = "\r\t\0(::)@_@" ; echo '原字符串为:' . $str . '<p>' ; echo 'charlist为:' . $charlist . '<p>' ; echo '不设置charlist的删除结果:' .trim( $str ). '<p>' ; echo '设置charlist的删除结果:' .trim( $str , $charlist ); ?> |
运行结果:
原字符串为: @_@(:测试:)@_@
charlist为: (::)@_@
不设置charlist的删除结果:@_@(:测试:)@_@
设置charlist的删除结果:测试
②转义、还原字符串数据
1>手动:简单字符串
使用转义字符 "\" 或者使用addcslashes()方法对字符串进行还原
【1】转义字符
123 | <?php echo 'select * from t_book wbere bookname=\'人月神话\'' ; ?> |
运行结果:
select * from t_book wbere bookname='人月神话'
【2】使用addcslashes()函数
12345678 | <?php $str = '人月神话adda' ; echo '原字符串:' . $str . '<p>' ; $a = addcslashes ( $str , "人月神话" ); echo '手工转义后的字符串:' . $a . '<p>' ; $b = stripcslashes ( $a ); echo '还原后的字符串:' . $b . '<p>' ; ?> |
运行结果:
原字符串:人月神话adda
手工转义后的字符串:\344\272\272\346\234\210\347\245\236\350\257\235adda
还原后的字符串:人月神话adda
2>自动:数据量大的字符串
使用addslashes()方法进行转义,然后使用stripslashes()方法进行还原
注意:所有数据在插入数据库之前,有必要用addslashes()方法进行转义,以免出现错误
12345678 | <?php $str = "selet * from t_book where bookname='人月神话'" ; echo '原字符串:' . $str . '<p>' ; $a = addslashes ( $str ); echo '自动转义后的字符串:' . $a . '<p>' ; $b = stripslashes ( $a ); echo '还原后的字符串:' . $b . '<p>' ; ?> |
运行结果:
原字符串:selet * from t_book where bookname='人月神话'
自动转义后的字符串:selet * from t_book where bookname=\'人月神话\'
还原后的字符串:selet * from t_book where bookname='人月神话'
③获取字符串长度
使用strlen()方法
注意:汉子占两个字节,其余字符占一个字节。
1234 | <?php $str = "人月神话是一本思维角度很棒的书。" ; echo 'str的长度为:' . strlen ( $str ); ?> |
运行结果:
str的长度为:48
④截取指定字符串
使用substr()方法
注意:
1>下标是从0开始
2>substr()截取中文字符时,如果截取的字符串出现单数,就会出现中文乱码的情况,因为中文占两个字节。要解决这个问题,需要用substr()自定义一个方法。
实例:在web页面中,经常需要对超长文本进行部分显示,来保证页面的合理布局。
12345 | <?php $str = 'PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。' ; echo '原字符串:<p>' . $str . '<p>' ; echo '截取后字符串显示:<p>' . substr ( $str ,0,101). '......' ; ?> |
运行结果:
原字符串:
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
>0 - 如果 string1 大于 string2
语法
strcmp(string1,string2)
参数 | 描述 |
---|---|
string1 | 必需。规定要比较的第一个字符串。 |
string2 | 必需。规定要比较的第二个字符串。 |
提示和注释
注释:该函数是二进制安全的,且对大小写敏感。
【2】strcasecmp()函数:不区分大小写,具体用法和strcmp()一样。
12345678 | <?php $str1 = 'php' ; $str2 = 'PHP' ; echo 'str1=' . $str1 . '<p>' ; echo 'str2=' . $str2 . '<p>' ; echo 'strcmp()函数比较结果:' . strcmp ( $str1 , $str2 ). '<p>' ; echo 'strcasecmp()函数比较结果:' . strcasecmp ( $str1 , $str2 ). '<p>' ; ?> |
运行结果:
str1=php
str2=PHP
strcmp()函数比较结果:1
strcasecmp()函数比较结果:0
2>按照自然排序法进行比较:对字符串中的数字进行比较,将数字按照大小进行排序
【1】strnatcmp()函数:区分大小写
定义和用法
strnatcmp() 函数使用一种“自然”算法来比较两个字符串。
在自然算法中,数字 "2" 小于数字 "10"。在计算机排序中,"2" 大于 "10",这是因为 "2" 大于 "10" 的第一个数字。
该函数返回:
0 - 如果两个字符串相等
<0 - 如果 string1 小于 string2
>0 - 如果 string1 大于 string2
语法
strnatcmp(string1,string2)
参数 | 描述 |
---|---|
string1 | 必需。规定要比较的第一个字符串。 |
string2 | 必需。规定要比较的第二个字符串。 |
提示和注释
注释:该函数对大小写敏感。
【2】strnatcasecmp()函数:不区分大小写,具体用法和strnatcmp()函数一样。
1234567891011 | <?php $str1 = 'php2?' ; $str2 = 'PHP2?' ; $str3 = 'PHP10?' ; echo 'str1=' . $str1 . '<p>' ; echo 'str2=' . $str2 . '<p>' ; echo 'str3=' . $str3 . '<p>' ; echo 'strcmp(str2,str3)比较结果:' . strcmp ( $str2 , $str3 ). '<p>' ; echo 'strnatcmp(str2,str3)比较结果:' . strnatcmp ( $str2 , $str3 ). '<p>' ; echo 'strnatcasecmp(str1,str3)比较结果:' . strnatcasecmp ( $str1 , $str3 ). '<p>' ; ?> |
运行结果:
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
>0 - 如果 string1 大于 string2
语法
strncmp(string1,string2,length)
参数 | 描述 |
---|---|
string1 | 必需。规定要比较的第一个字符串。 |
string2 | 必需。规定要比较的第二个字符串。 |
length | 必需。规定每个字符串用于比较的字符数。 |
提示和注释
注释:该函数是二进制安全的,且对大小写敏感。
【2】strncasecmp():不区分大小写,具体用法和strncmp()一样。
12345678 | <?php $str1 = 'i love china' ; $str2 = 'I lovE Web' ; echo 'str1=' . $str1 . '<p>' ; echo 'str2=' . $str2 . '<p>' ; echo 'strncmp(str1,str2,6)比较结果:' . strncmp ( $str1 , $str2 ,6). '<p>' ; echo 'strncasecmp(str1,str2,6)比较结果:' . strncasecmp ( $str1 , $str2 ,6). '<p>' ; ?> |
运行结果:
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 | 可选。规定搜索的长度。 |
1234 | <?php $str= '测试单词的出现的次数,为了配合测试,多写几个词,这是第三次出现词这个单词,好吧,第四次了。' ; echo '\'词\'出现的次数是:' .substr_count($str, '词' ); ?> |
运行结果:
'词'出现的次数是:4
⑦替换字符串
1>用一个字符串替换原字符串的另一些字符,最常用的就是搜索引擎的关键字处理,如关键字描红(适用于模糊查询)等。
【1】str_replace()函数:区分大小写
str_replace(find,replace,string,count)
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。一个变量,对替换数进行计数。 |
提示和注释
注释:该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。
注释:该函数是二进制安全的。
【2】str_ireplace()函数:不区分大小写,具体用法类似str_replace()函数。
<body> <?php $str1 = '周杰伦J-->1-->周杰伦J-->2-->周杰伦j-->3-->周杰伦j-->4-->周杰伦J' ; $str2 = '周杰伦j' ; $str3 = "<font color='#FF0000'>Jay</font>" ; $num =0; echo '原字符串:' . $str1 . '<p>' ; echo '检测字符:' . $str2 . '<p>' ; echo '替换字符:' . $str3 . '<p>' ; echo 'str_replace($str2,$str3,$str1)执行结果:' . str_replace ( $str2 , $str3 , $str1 ). '<p>' ; echo 'str_ireplace($str2,$str3,$str1)执行结果:' . str_ireplace ( $str2 , $str3 , $str1 ). '<p>' ; echo 'str_replace($str2,$str3,$str1,$num)执行结果:' . str_replace ( $str2 , $str3 , $str1 , $num ). '<p>' ; echo 'str_replace($str2,$str3,$str1,$num)替换的个数是:' . $num ; ?> </body> |
运行结果:
原字符串:周杰伦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 | 必需。规定在字符串的何处开始替换。
|
charlist | 可选。规定要替换多少个字符。
|
提示和注释
注释:如果 start 是负数且 length 小于等于 start,则 length 为 0
<body> <?php $str = 'test the substr_replace()' ; $str1 = 'hehe' ; echo '原字符串:' . $str . '<p>' ; echo 'substr($str,$str1,0,4)替换后的字符串:' .substr_replace( $str , $str1 ,0,4). '<p>' ; ?> </body> |
运行结果:
原字符串: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"。 注释:如果设置了该参数,那么所有其他参数都是必需的。 |
提示和注释
注释:该函数支持一个、两个或四个参数(不是三个)
<body> <?php $str = '123.633' ; echo 'str=' . $str . '<p>' ; echo 'number_format($str)=' .number_format( $str ). '<p>' ; echo 'number_format($str,2)=' .number_format( $str ,2). '<p>' ; $str1 = '111222333.444555' ; echo 'str1=' . $str1 . '<p>' ; echo 'number_format($str1,2,\'*\',\'_\')=' .number_format( $str1 ,2, '*' , '_' ). '<p>' ; ?> </body> |
运行结果:
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 参数之前才行
<body> <?php $str = '01@12@23@34@45@56@67@78@89' ; $str_array = explode ( '@' , $str ); echo '第一种输出方法print_r($str_array)<p>' ; print_r( $str_array ); echo '<p>' ; echo '第二种输出方法echo $str_array[]<p>' ; for ( $i =0; $i <10; $i ++){ echo $str_array [ $i ]. ' ' ; } ?> </body> |
运行结果:
第一种输出方法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 参数之前才行。
<body> <?php $str = '01@12@23@34@45@56@67@78@89' ; $str_array = explode ( '@' , $str ); $str_array_new =implode( '@' , $str_array ); echo '合并后的字符串:' . $str_array_new ; ?> </body> |
运行结果:
合并后的字符串:01@12@23@34@45@56@67@78@89
共同学习,写下你的评论
评论加载中...
作者其他优质文章