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

[经验分享] php中常用字符串处理函数的知识总结

[复制链接]

尚未签到

发表于 2018-12-19 09:21:12 | 显示全部楼层 |阅读模式
  1、字符串长度函数
  strlen获取字符串长度
int strlen ( string $string )
      成功则返回字符串string的长度;如果string为空,则返回 0
  mb_strlen获取字符串长度,多字节支持,支持中文
      int mb_strlen ( string $str [, string $encoding ] )
encoding 参数为字符编码。如果省略,则使用内部字符编码。
$str = '中国,你好';
echo strlen($str);//15
echo mb_strlen($str,'utf-8');//5
  2、字符串查找函数
  strpos查找字符串首次出现的位置
    int strpos ( string $haystack , mixed$needle [, int $offset = 0 ] )
  返回 needle haystack 中首次出现的数字位置。
  ===全等号的做作,当使用strpos查找第一个字符的位置(即0)的时候,用于if判断时,会被if判断为假。
  例子:应这样来判断
  $str1 = 'abcdefg';
  $str2 = 'a';
  
  if(strpos($str1,$str2) !==false){
      echo 'a';
  }else{
      echo '没有a';
  }
  stripos查找字符串首次出现的位置(不区分大小写)
  
  $strr1 = 'Abcdefag';
  $strr2 = 'a';
  echo stripos($strr1,$strr2);#1
  
  strrpos()计算指定字符串在目标字符串中最后一次出现的位置
  
  $strr1 = 'abcdefag';
  $strr2 = 'a';
  echostrrpos($strr1,$strr2);#6
  
  
  strrchr—查找指定字符在字符串中的最后一次出现,返回的是从该查找字符开始到字符串最后位置之间的字符(包括了该查找字符)
  string strrchr ( string$haystack , mixed $needle )
  $strr1 = 'Abcdefag';
  $strr2 = 'd';
  echo strrchr($strr1,$strr2);#defag
  
  strstr查找指定字符在字符串中第一次出现的位置,返回的是从该查找字符开始到字符最后位置之间的字符strstr($str1,$str2)(包括了该查找字符)
  $strr1 = 'Abcdefag';
  $strr2 = 'b';
  echostrstr($strr1,$strr2);#bcdefag
  
  stristr查找指定字符在字符串中第一次出现的位置,返回的是从该查找字符开始到字符最后位置之间的字符,忽略大小写
  string stristr ( string$haystack , mixed $needle [, bool $before_needle = false ] )
  返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
  
  
  字符串替换函数
  
  str_replace:子字符串替换函数,$str中查找 searchreplace来替换
  str_replace(search,replace,$str)
  
  $str = 'hello world';
  echostr_replace('ll','LL',$str);#heLLo world
  
  str_ireplace: 子字符串替换函数,$str中查找 searchreplace来替换,忽略大小写
  str_irreplace(search,replace,$str):
  
  $str = 'helLo woRld';
  echostr_ireplace('ll','wencheng',$str);
  
  strtr—转换指定字符,在$str中查找searchreplace来替换
  strtr($str,search,replace)replace中字符的个数大于search中的字符个数时,与search中的字符个数为准,其余的将被截取掉
  echostrtr("xcroom","xc","op1234");#oproom
  replace中字符的个数小于search中的字符个数时,与replace中的字符个数为准,其余的将被保留
  echo strtr("xcroom","xc","u");#ucroom
  支持数组替换xcroomstring
  $str = array('xc'=>'cx','om'=>'mo');
  echo strtr("xcroomstring",$str);#cxromostring
  
  
  substr_replace:替换字符串的子串
  
  substr_replace($Str,$replacement,$start[,length])
  $str原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选
  
  参数
  str:输入的字符串。
  replacement:替换的字符串。
  start
  如果 start 为正数,替换将从 string start 位置开始。
  如果 start 为负数,替换将从 string 的倒数第 start 个位置开始。
  length
  如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。当然,如果 length 0,那么这个函数的功能为将 replacement 插入到 string start 位置处。
  例子:
  $str = 'hello world';
   //从开头位置替换,替换全部
  echosubstr_replace($str,'bbo',0),'';#bbo
  
  //从开头位置替换,替换3个字符
  echosubstr_replace($str,'bbo',0,3),'';#bbolo world
  
  //从字符串的倒数第几个字符开始替换,当第三个指定了为负数时,第四个参数为0时,代表的是将bbo插入至倒数第三个位置上,替换0
  echosubstr_replace($str,'bbo',-3,0),'';#hello wobborld
  echosubstr_replace($str,'bbo',-3,1),'';#hello wobbold,替换1
  echosubstr_replace($str,'bbo',-3,2),'';#hello wobbod,替换2
  echosubstr_replace($str,'bbo',-3,3),'';#hello wobbo,替换3
  echosubstr_replace($str,'bbo',-3,4),'';#hello wobbo,替换3
  echosubstr_replace($str,'bbo',-3,-1),'';#hello wobbod,替换从尾部开始的1,3个字符
  echosubstr_replace($str,'bbo',-3,-2),'';#hello wobbold
  
  //如果有10个词需要进行替换,可以用数组做参数,批量替换
  $cont = 'abcde hello world';
  $old =array('a','b','c','d','e');
  $new = array('A','B','C','D','E');
  echo str_replace($old,$new,$cont),''; // ABCDE hEllo world
  
  截取子字符函数
  substr返回字符串的子串
  substr($str,int start[,intlength]):$strstrat位置开始提取[length长度的字符串]
  
  参数
  string:输入字符串。
  start
  如果 start 是非负数,返回的字符串将从 string start 位置开始,从 0 开始计算。
  例如,在字符串“abcdef”中,在位置 0 的字符是“a”,位置 2 的字符串是“c”等等。
  如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。
  如果 string 的长度小于或等于 start,将返回 FALSE
  length
  如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。
  
  如果提供了负数的 length,那么 string 末尾处的许多字符将会被漏掉,漏掉-n个(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。
  
  如果提供了值为 0FALSE NULL length,那么将返回一个空字符串。
  
  如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。
  例子:
  
  
  分割,连接,反转函数
  分割函数:
  str_split将字符串转换为数组(字符到数组)
  str_split($str,len):$strlen长度进行分割返回数组
  $str ='0123456789';
  print_r(str_split($str,3));
  //Array ( [0] =>012 [1] => 345 [2] => 678 [3] => 9 )
  
  $str ='0123456789';
  print_r(str_split(strrev($str),3));//strrev()为字符串反转函数
  Array ( [0] =>987 [1] => 654 [2] => 321 [3] => 0 )
  
  split—用正则表达式将字符串分割到数组中
  array split ( string $pattern, string $string [, int $limit ] )
  
  explode—使用一个字符串分割另一个字符串,分割的字符可以为空格和其他标点符号类的字符
  array explode ( string$separator , string $string [, int $limit ] )
  
  $str ="ab:cd:ef:gh";
  print_r(explode(':',$str));
  Array ( [0] => ab [1]=> cd [2] => ef [3] => gh )
  
  implode—— 将数组用特定的分割符转变为字符串(数组到字符)
  
  $a = array('a','b','c','d','e','f','g');
  echo implode($a,'|');   //分隔符为指定的字符串a|b|c|d|e|f|g
  echo implode($a);       //直接转化成字符串 abcdefg
  
  
  字符串比较函数
  strcmp:二进制安全字符串比较
  int strcmp ( string $str1 ,string $str2 )
  
  返回值
  如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0
  
  strcasecmp—二进制安全比较字符串(不区分大小写)
  int strcasecmp ( string $str1, string $str2 )
  
  返回值
  如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0
  
  字符串转换函数:
  strtolower($str)字符串转换为小写
  $str = 'HELLO WORLD';
  echo strtolower($str); #HELLOWORLD
  
  strtoupper($str)字符串转换为大写
  $str = 'hello world';
  echo strtoupper($str);#helloworld
  
  
  ucfirst($str)将字符串的第一个字符转换为大写
  $str = 'hello world';
  echo ucfirst($str);# Helloworld
  
  ucwords($str)将每个单词的首字母转换为大写
  $str = 'hello world';
  echo ucwords($str);#HelloWorld
  
  空白处理函数
  trim:去除字符串首尾处的空白字符(或者其他字符)
  string trim ( string $str [,string $charlist ] )
  
  ltrim:去除字符串首处的空白字符(或者其他字符)
  string ltrim ( string $str [,string $charlist ] )
  
  rtrim:去除字符串尾处的空白字符(或者其他字符)
  string rtrim ( string $str [,string $charlist ] )
  
  
  
  
  chunk_split—将字符串分割成小块
  
  string chunk_split ( string$body [, int $chunklen [, string $end ]] )
  
  $str = 'abcdefghijk';
  #$str按两个字符以指定的格式进行分割
  echochunk_split($str,2,"/");
  ab/cd/ef/gh/ij/k/
  
  
  str_pad—使用另一个字符串填充字符串为指定长度
  
  string str_pad ( string$input , int $pad_length [, string $pad_string = " " [, int $pad_type= STR_PAD_RIGHT ]] )
  
  
  
  字符串转义函数;
  为什么需要转义:
  如果用户发布的内容,直接显示在页面上,那么用户可能发布带有html代码,甚至js代码的内容.当用户浏览内容时,也可能引来***. XSS***
  
  addslashes:使用反斜线引用字符串
  string addslashes ( string$str )
  
  返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NULNULL 字符)。
  注:
  在使用addslashes请注意,系统有一个魔术引号的选项,如果该选项开启,则会自动把$_GET,$_POST,$_COOKIE,$_SESSION中的数据,自动转义.
  不过该选项,PHP5.0以上已经默认关闭.
  试想如下场景:
  如果魔术引号开启, $_POST过来的值,自动转义,但我们不知道魔术引号已开启,还手动转了一次.
  后果:'=>\'==>\\\', 重复转义了.
  解决魔术引号的问题
  如何解决?
  :判断一下当前的环境,魔术引号是否开启.
  如果开启,则不手动addslashes,如没开启,addsalashes
  如何判断当前魔术引号是否开启??????
  get_magic_quotes_gpc()函数来判断,可以用合理的转义来避免sql注入***
  
  

  例子:
  
  
  stripslashes:字符的反转义,反引用一个字符串
  返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。
  
  htmlspecialchars — Convertspecial characters to HTML entities
  将字符串中一些字符转换为HTML实体
  

运维网声明 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-653056-1-1.html 上篇帖子: linux下编写php5.6的C扩展模块(双向链表) 下篇帖子: lamp环境搭建mysql5.1+httd2.2+php5.3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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