9AMC 发表于 2018-12-22 12:35:16

PHP学习笔记【12】_字符串

  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 ( => 01 => 12 => 23 => 34 => 45 => 56 => 67 => 78 => 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



页: [1]
查看完整版本: PHP学习笔记【12】_字符串