字符串函数

一、字符串的统计和加密

  strlen($str):得到字符串长度

  mb_strlen($str,'utf-8'):获得字符串长度,可用于含中文的字符串

    'utf-8':可选参数,设置字符编码方式,若省略该参数则使用内部字符编码

  str_word_count($str ,$format ,$charlist):统计字符串中含有的单词数

    $format:可选参数,决定以什么形式输出统计结果

      0:默认,直接返回整型数字;

      1:将各单词作为键值输出为新的索引数组;

      2:将各单词出现的位置作为键名,各单词作为键值,输出为新的数组;

    $charlist:可选参数,附加字符串,其中的字符在统计时作为单词的组成部分

  count_chars($str ,$mode):统计字符串中每个字节出现的次数,返回为数组

    $mode:

      0:以每个字节作为键名,出现次数作为键值,输出为数组

      1:输出的数组只列出出现次数大于0的字节

      2:输出的数组只列出出现次数等于0的字节

      3:输出由所有使用了的字节组成的字符串

      4:输出由所有未使用的字节组成的字符串

  md5($str):返回以MD5散列值方式加密后的字符串

二、去除空格或其他字符串

  trim($str ,"指定要去除的字符"):删除字符串首尾两端的空格、预定义字符或指定字符

    若不指定第二个参数,trim()将默认去除这些字符:

      普通空格符

       制表符

       换行符

       回车符

       空字节符

      x0B 垂直制表符

  rtrim($str ,"指定要去除的字符"):删除字符串右端的空格、预定义字符或指定字符

  chop($str ,"指定要去除的字符"):chop()为rtrim()的别名,功能相同

  ltrim($str ,"指定要去除的字符"):删除字符串左端的空格、预定义字符或指定字符

三、字符串的编辑

  str_pad($str ,$length ,$pad_str ,STR_PAD_RIGHT):用另一字符串把该字符串$str填充为指定长度

    $length:指定长度,该值需大于$str的原长度,否则不发生填充

    $pad_str:可选参数,指定用来填充的字符串,当该参数未被指定时,则$str被空字符串填充

    STR_PAD_RIGHT:默认值,默认向字符串$str右端填充,可改为:STR_PAD_LEFT(左端)、STR_PAD_BOTH(两端)

  str_repeat($str ,#):重复字符串#次

    #:重复显示字符串$str的次数,需大于等于0,等于0时函数返回空字符串

  strrev($str):反转字符串(abc! -> !cba)

  str_shuffle($str):随机打乱字符串

  strtr($str ,$from ,$to):转换字符串中的某些字符

    $from:指定要被转换的字符

    $to:转换成什么字符

    “$from ,$to”可用array("from"=>"to",...)的数组形式代替

    例:

      $arr=array("i"=>"I","autumn"=>"Autumn");

      echo strtr("i am autumn",$arr);  //I am Autumn

四、字符串的拆分与拼接

  parse_str($str ,$arr):将字符串解析成多个变量

    $arr:表示被解析的变量将对应成为数组的各元素

    例:

      $str="first=value&arr1[]=foo+bar&arr1[]=baz";

      parse_str($str);        parse_str($str,$arr);

      echo $first;  //value        echo $arr['first'];  //value

      echo $arr1[0];  //foo bar               echo $arr['arr1'][0];  //foo bar

      echo $arr1[1];  //baz                     echo $arr['arr1'][1];  //baz

  str_split($str ,$length):将字符串分割为数组

    $length:可选参数,表示按多少个字符为一段分割字符串给数组各元素,若不设置该参数则分割单个字符给各数组元素

    例:

      $str="Hello,world!";

      print_r(str_split($str)); 

      //Array([0]=>H[1]=>e[2]=>l[3]=>l[4]=>o[5]=>,[6]=>w[7]=>o[8]=>r[9]=>l[10]=>d[11]=>!)

      print_r(str_split($str,5));  //Array([0]=>Hello[1]=>,worl[2]=>d!)

  explode("分隔符" ,$str ,$num):将字符串以分隔符拆分成数组

    $num:可选参数

        若为正,则输出的数组最多包含$num个元素,最后一个元素会包含分割后的剩余部分

        若为负,则输出的数组将删除最后的$num个元素

        若为0,则等同于$num=1,输出的数组仅包含一个元素,该元素键值即为原字符串

    例:

      $str="abc#1234#ABCDE#hello world";

      var_dump(explode("#",$str));

      //array(4){[0]=>"abc"[1]=>"1234"[2]=>"ABCDE"[3]=>"hello world"}

      var_dump(explode("#",$str,3));

      //array(3){[0]=>"abc"[1]=>"1234"[2]=>"ABCDE#hello world"}

      var_dump(explode("#",$str,-1));

      //array(3){[0]=>"abc"[1]=>"1234"[2]=>"ABCDE"}

      var_dump(explode("#",$str,0));

      //array(1){[0]=>"abc#1234#ABCDE#hello world"}

  chunk_split($str ,$length ,$str_end):将字符串以分割符分成不连续的小段组成的新字符串

    $length:可选参数,指定按多少个字符为一段分割字符串,不指定该参数时字符串原样输出

    $str_end:可选参数,指定分割符,不指定该参数时默认以一个空格作为分割符

  wordwrap($str ,$width ,$str_end ,false):将本身有断开的字符串打断为字符段,当字符串本身为连续的完整字符串时不执行打断

    $width:指定打断后的每个字符段可容纳的最大字符数

    $str_end:指定执行打断所用的分割符

    false:默认值,默认当打断后的字符段中的字符数超过指定的$width时不会执行强行打断而破坏连续性,true为强行打断

  implode("连接符" ,$arr):将数组的键值以连接符连接成字符串

    例:

      $arr=array("a","b","username"=>"ZWQ","age"=>25,"c");

      var_dump(implode("#",$arr));  //"a#b#ZWQ#25#c"

  join("连接符" ,$arr):将数组的键值以连接符连接成字符串,作用等同于implode()

    快速创建字符串的方法:

      ①$str=implode("",range(0,9));

      ②$str=join("",range("a","z"));

      ③$arr=array_merge(range(0,9),range("a","z"),range("A","Z"));

        $str=implode("",$arr);

五、字符串的截取

  substr($str ,$start ,$length):截取字符串中的一段字符

    $start:起始位置偏移量

      >=0时,表示从偏移量对应位置的字符开始向右截取至结尾

      <0时,表示以从右向左的第$start个位置的元素开始向右截取至结尾

    $length:截取长度

      >0时,表示要截取的元素个数

      <0时,表示截取到从右向左的第$length个元素,但不包含该元素

      =0时,返回空字符

    例:

      $str="abcdef";

      echo substr($str,2);  //cdef

      echo substr($str,-3);  //def

      echo substr($str,0,3);  //abc

      echo substr($str,2,-2);  //cd

      echo substr($str,-5,-2);  //bcd

  mb_substr($str ,$start ,$length ,'utf-8'):截取字符串中的一段字符,功能与substr相似,但可根据字符集参数来截取中英字符混合的字符串

  strstr($str ,$search ,false):在字符串$str中查找$search字符段第一次出现的位置,如果找到则返回从该位置到结尾的字符,包括该位置的字符;如果没找到则返回false;

    false:默认值,若为true则返回$search第一次出现的位置之前的字符,不包括该位置的字符

  strchr($str ,$search):功能同strstr()

  stristr($str ,$search ,false):功能同strstr(),但不区分大小写的查找$search在$str中第一次出现的位置

  strrchr($str ,$search):在字符串$str中查找$search字符段最后一次出现的位置,如果找到则返回从该位置到结尾的字符,包括该位置的字符;如果没找到则返回false;

六、字符串的查找与替换

  strpos($str ,$search ,$start_num):在指定字符串$str中查找另一个字符串$search,如果找到则返回这个字符串的第一次出现的位置;如果没找到则返回false;

    $start_num:可选参数,起始偏移量,默认为0,从该偏移量对应位置的字符开始查找,之前的字符跳过,不能为负值

    例:

      $str="abcde";

      $search="a";

      if(strpos($str,$search) !== false){

        echo "找到";

      }else{

        echo "未找到";

      }

      注意:若要查找的字符段在开头,函数strpos()会正常返回其位置为0,但在if判断时会将0默认转为false,故这里需要用“!==”判断值与类型,以排除位置为0的情况

  stripos($str ,$search ,$start_num):功能同strpos(),但忽略大小写地查找

    例:

      查找填写的邮箱中是否有“@”,是否合法

      $email="819508293@qq.com";

      $search="@";

      if(stripos($email,$search)){

        echo "合法";

      }else{

        echo "不合法";

      }

      这里如果@放在了开头,stripos()返回的结果为0->false,则刚好判定为不合法

  strrpos($str ,$search ,$offset):在指定字符串$str中查找另一个字符串$search,如果找到则返回这个字符串的最后一次出现的位置;如果没找到则返回false;

    $offset:可选参数,为负数时表示查找到距离字符串$str的结尾第$offset个位置的字符时停止查找

  strripos($str ,$search ,$offset):功能同strrpos(),但忽略大小写地查找

  str_replace($search ,$replace ,$str):严格区分大小写地在字符串$str中查找另一个字符串$search,如果找到就替换成字符串$replace,返回替换后的字符串;如果没找到就不做操作,返回原字符串

  str_ireplace($search ,$replace ,$str):功能同str_replace(),但不区分大小写的查找并替换

  substr_replace($str ,$replace ,$start ,$length):用另一字符串$replace替换原字符串$str中的部分字段

    $start:起始位置偏移量

    $length:可选参数,指定$str中将被替换掉的字段长度,默认为原$str的长度;

      若为负数,表示从$start位置开始到距离结尾$length位置之间的字段将被替换掉

      若为0,表示仅将$replace插入$start位置,不进行替换(字符串的中间插入)

    例:

      $str="abc123abc123abc123";

      $replace="def";

      echo substr_replace($str,$replace,3);  //abcdef

      echo substr_replace($str,$replace,3,0);  //abcdef123abc123abc123

      echo substr_replace($str,$replace,3,-2);  //abcdef23

七、大小写转换

  strtolower($str):字符串转为小写

  strtoupper($str):字符串转为大写

  ucfirst($str):字符串首字母转为大写

  ucwords($str):字符串中每个单词的首字母转为大写

八、字符串比较

  substr_count($str1 ,$str2 ,$offset ,$length):比较字符串$str2在字符串$str1中出现的次数

    $offset:可选参数,$str1的起始偏移量

    $length:可选参数,对$str1的搜索比较长度

  similar_text($str1 ,$str2):输出两个字符串中相同字符的数量

  strcasecmp($str1,$str2):不区分大小写地比较两个字符串(以二进制比较)

    $str1>$str2,则strcasecmp($str1,$str2)为1  >0

    $str1=$str2,则strcasecmp($str1,$str2)=0

    $str1<$str2,则strcasecmp($str1,$str2)为-1  <0

  strcmp($str1 ,$str2):区分大小写地比较两个字符串(以二进制比较)

  strncasecmp($str1 ,$str2 ,$len):比较两个字符串的前$len个字符,不区分大小写(以二进制比较)

  strncmp($str1 ,$str2 ,$len):比较两个字符串的前$len个字符,区分大小写(以二进制比较)

  strnatcasecmp($str1 ,$str2):以自然顺序法比较两个字符串,不区分大小写

  strnatcmp($str1 ,$str2):以自然顺序法比较两个字符串,区分大小写

  strspn($str1 ,$str2 ,$start_num ,$length):遍历字符串$str1中的各字符,当首次遇到的字符(单个或连续多个)被包含于限定字符串$str2中时,返回该段字符的长度,而当首次遇到的字符即为不包含于限定字符串$str2中时,返回结果为0

    $start_num:可选参数,起始偏移量,表示从该位置向右开始遍历字符串$str1中的各字符

    $length:可选参数,表示检查$str1中的字符的长度,>=0时检查$length个字符,<0时检查到距离结尾$length个字符的位置时结束

    例:

      echo strspn("foo","o");  //0

      echo strspn("ofoo","o");  //1

      echo strspn(" ofoo","o");  //0

      echo strspn("foo","o",1,2);  //2

  strcspn($str1 ,$str2 ,$start_num ,$length):遍历字符串$str1中的各字符,当首次遇到的字符(单个或连续多个)不被包含于限定字符串$str2中时,返回该段字符的长度,而当首次遇到的字符即为包含于限定字符串$str2中时,返回结果为0

    $start_num、$length:可选参数,同函数strspn()中的参数

    例:

      echo strcspn("foo","o");  //1

      echo strcspn("ofoo","o");  //0

      echo strcspn(" ofoo","o");  //1

      echo strcspn("hello","world");  //2 h e

九、HTML标签关联

  ord($str):得到一个字符的ASCII码值,若$str为字符串则返回第一个字符的ASCII码值

  chr($ascii):根据ASCII码值得到指定字符

  strip_tags($str ,$allowTags):去除字符串$str中的HTML和PHP标签

    $allowTags:可选参数,允许保留的标签

    例:

      $str="<h1>my name is 'Autumn'</h1><!--Comment--><a href='www.baidu.com'>PHP</a>";

      echo strip_tags($str);  //my name is 'Autumn'PHP

      echo strip_tags($str,"<a>");  //my name is 'Autumn'PHP
      echo strip_tags($str,"<h1><a>");

  htmlentities($str ,ENT_COMPAT|ENT_HTML401 ,'utf-8' ,true):将字符转换为HTML实体,中文字符等会一起转换掉

    ENT_COMPAT:可选参数,默认为转换双引号保留单引号,ENT_QUOTES为两者均转换,ENT_NOQUOTES为两个均保留不转换

    ENT_HTML401:可选参数,默认转换为HTML4.01,包括ENT_HTML401/ENT_XML1/ENT_XHTML/ENT_HTML5

    'utf-8':可选参数,PHP5.4.0之前转换的编码方式默认为ISO-8859-1,PHP5.4.0及之后默认为UTF-8

    true:可选参数,默认为true,转换一切,若为false则不会转换现有的HTML实体

    例:

      $str="<h1>my name is 'Autumn'</h1>";

      echo htmlentities($str);  //&lt;h1&gt;my name is 'Autumn'&lt;/h1&gt;

  htmlspecialchars($str ,ENT_COMPAT|ENT_HTML401 ,'utf-8' ,true):将特殊字符转换为HTML实体,中文字符等不会被转换,推荐使用

    特殊字符包含:& " ' < >

    参数同函数htmlentities()的参数

  nl2br($str):将字符串$str中的 、 、 替换为<br>,使得在源代码页面的换行标签变为<br>,且页面的换行效果也显示出来

  addcslashes($str ,$charlist):在字符串$str中包含于限定字符串$charlist中的字符前添加反斜线转义该字符

  stripcslashes($str):删除由函数addcslashes()添加的反斜线转义符,将已转义的字符进行反转义

  addslashes($str):在预定义字符前添加反斜线转义符,以正常引用这些预定义字符

    预定义字符包含:' " null

    用途:在向数据库中插入含有预定义字符的数据时

  stripslashes($str):删除由函数addslashes()添加的反斜线转义符,对引用的预定义字符进行反引用

  quotemeta($str):在预定义字符前添加反斜线转义符,以正常引用这些预定义字符

    预定义字符包含:. + * ? [ ^ ] ( $ )

原文地址:https://www.cnblogs.com/zhouwanqiu/p/9016094.html