设为首页 收藏本站
查看: 1242|回复: 0

[经验分享] PHP学习笔记【12】_字符串

[复制链接]

尚未签到

发表于 2018-12-22 12:35:16 | 显示全部楼层 |阅读模式
  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




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654415-1-1.html 上篇帖子: php-5.5的php-fpm启动脚本 下篇帖子: PHP关于RSS的编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表