zoukankan      html  css  js  c++  java
  • 字符串函数

    一、字符串的统计和加密

      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):在预定义字符前添加反斜线转义符,以正常引用这些预定义字符

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

  • 相关阅读:
    SE -- IO
    SE -- 多线程
    SE -- 继承
    SE -- 面对对象
    SE -- 数组
    Modern Operating System --- Chap 5.5 Clocks
    Operating System: Three Easy Pieces --- Paging: TLB (Note)
    Operating System: Three Easy Pieces --- Process (Note)
    Some Interesting Websites and Blogs
    Implement a System Call in Kernel 3.10.56 (X86_64)
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/9016094.html
Copyright © 2011-2022 走看看