美文网首页
PHP字符串处理函数 区别 mb_ 系列函数

PHP字符串处理函数 区别 mb_ 系列函数

作者: xuxin2020 | 来源:发表于2021-03-02 17:22 被阅读0次
    1.addcslashes以 C 语言风格使用反斜线转义字符串中的字符,它返回带有斜杠的字符串
    addcslashes ( string $str , string $charlist )
    str     要转义的字符串。
    charlist    如果charlist中包含有 \n,\r 等字符,将以 C 语言风格转换,而其它非字母数字且 ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。当定义 charlist 参数中的字符序列时,需要确实知道介于自己设置的开始及结束范围之内的都是些什么字符。
    
    echo addcslashes('Foo[ ]ccc\n', 'A..z');
    输出: \F\o\o\[ \]\c\c\c\\\n
    
    2.addslashes使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
    $str = 'Is your name O"reilly?';
    echo addslashes($str);
    输出:Is your name O\"reilly?
    
    3.chop - rtrim()的别名,删除字符串末端的空白字符(或者其他字符)
    rtrim ( string $str [, string $character_mask ] )
    str     输入的字符串
    character_mask  通过指定 character_mask,可以指定想要删除的字符列表。简单地列出你想要删除的全部字符。使用 .. 格式,可以指定一个范围。如果不传入该参数,则函数默认删除如下字符
    " " (ASCII 32 (0x20)),普通空白符。
    "\t" (ASCII 9 (0x09)),制表符。
    "\n" (ASCII 10 (0x0A)),换行符。
    "\r" (ASCII 13 (0x0D)),回车符。
    "\0" (ASCII 0 (0x00)),NUL 空字节符。
    "\x0B" (ASCII 11 (0x0B)),垂直制表符。
    $text = "\t\tThese are a few words :) ...  ";   string(32) "        These are a few words :) ...  "
    $binary = "\x09Example string\x0A";       string(16) "  Example string
    "
    $hello  = "Hello World";  string(11) "Hello World"
    
    chop($text);  ===>string(30) "      These are a few words :) ..."
    chop($text, " \t.");===>string(26) "        These are a few words :)"
    chop($hello, "Hdle");===> string(9) "Hello Wor"
    
    // 删除 $binary 末端的 ASCII 码控制字符
    // (包括 0 - 31)
    chop($binary, "\x00..\x1F");===> string(15) "   Example string"
    
    4.ltrim - 删除字符串开头的空白字符(或其他字符)
    ltrim ( string $str [, string $character_mask ] )
    $text = "\t\t这是一些词 :) ...  ";
    $trimmed = ltrim($text, " \t.");===>string(18) "这是一些词 :)"
    gbk编码下一个中文占俩个字节 utf-8下一个中文占3个字节
    
    5.chr函数返回指定ASCII码的字符,此函数与 ord() 是互补的。
    chr ( int $ascii )
    参数 ascii           Ascii 码
    $str = sprintf("The string ends in escape: %c", 37);
    输出:The string ends in escape: %
    
    $str = "ccccccc";
    echo $str.chr(97);  // 在字符串后添加一个a   a的ASCII码为97
    输出:ccccccca
    
    6.chunk_split函数将字符串分割成小块。
    chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )
    使用此函数将字符串分割成小块非常有用。例如将base64_encode()的输出转换成符合 RFC 2045 语义的字符串。它会在每chunklen 个字符后边插入end。
    参数
    参数      必需的          描述
    body        是          要分割的字符。
    chunklen    否          分割的尺寸。默认值76。
    end         否          行尾序列符号。默认值"\r\n"
    
    $data = 'abc';
    $base64str = base64_encode($data);  
    输出: YWJj
    $new_string = chunk_split($base64str,2,'--');
    echo $new_string;
    输出:YW--Jj--
    
    7.convert_cyr_string函数将字符由一种 Cyrillic 字符转换成另一种。

    提示:此函数可安全用于二进制对象。

    convert_cyr_string ( string $str , string $from , string $to )
    参数        必需的           描述
    str         是              要转换的字符。
    from         是            单个字符,代表源 Cyrillic 字符集。
    to          是              单个字符,代表了目标 Cyrillic 字符集。
    支持的字符集类型有
    k - koi8-r
    w - windows-1251
    i - iso8859-5
    a - x-cp866
    d - x-cp866
    m - x-mac-cyrillic
    
    8.convert_uuencode函数编码一个 uuencode 编码的字符串
    echo convert_uuencode("hello world!"); 
    输出:+:&5L;&\@=V]R;&0`
    `
    
    9.convert_uudecode函数解码一个 uuencode 编码的字符串
    echo convert_uudecode("&Y+V@Y:6]
    `");
    输出:你好
    `
    
    10.count_chars函数返回字符串所用字符的信息
    count_chars ( string $string [, int $mode = 0 ] )
    参数  必需的 描述
    string  是   需要统计的字符串。
    mode    否   参见返回的值。
    返回值
    根据不同的mode,count_chars() 返回下列不同的结果:
    0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
    1 - 与 0 相同,但只列出出现次数大于零的字节值。
    2 - 与 0 相同,但只列出出现次数等于零的字节值。
    3 - 返回由所有使用了的字节值组成的字符串。
    4 - 返回由所有未使用的字节值组成的字符串。
    $str = "Hello World!";
    echo count_chars($str,3); 参数 "mode 3" 会返回包含所有用过的不同字符的字符串。在本例中,在 "Hello World!" 中使用的字符是:
    输出:" .FTadenosw"
    
    11.crypt函数返回单向字符串散列
    crypt ( string $str [, string $salt ]  )
    参数  必需的 描述
    str 是   待散列的字符串。
    salt    否   可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。
    返回值
    返回散列后的字符串或一个少于 13 字符的字符串,从而保证在失败时与盐值区分开来。
    
    注意 当校验密码时,应该使用一个不容易被时间攻击的字符串比较函数来比较crypt()的输出与之前已知的哈希。出于这个目的,PHP5.6开始提供了hash_equals()函数。
    提示:password_hash()使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。password_hash()是crypt()的一个简单封装,并且完全与现有的密码哈希兼容。推荐使用password_hash()。
    
    // 设置密码
    $password = 'mypassword';
    // 获取散列值,使用自动盐值 //不加盐值 php>=5.6会有notice错误
    $hash = crypt($password);
    string(34) "$1$xMG7.bms$oMxKesg.E9pEuZRvGt4w/."
    
    12.echo - 输出一个或多个字符串

    注意 echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以。 echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。 另外,如果你想给echo 传递多个参数, 那么就不能使用小括号。echo 也有一个快捷用法,你可以在打开标记前直接用一个等号。在 PHP 5.4.0 之前,必须在php.ini里面启用short_open_tag才有效。例如:I have <?=$foo?> foo.

    与print区别
    print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。 和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。

    echo "a","b",'c';  abc
    echo print(strlen('abc')) ===> 31
    
    13.explode - 使用一个字符串分割另一个字符串
    explode ( string $delimiter , string $string [, int $limit ]  )
    此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。
    参数  必需的 描述
    delimiter   是   边界上的分隔字符。
    string  是   输入的字符串。
    limit   否   如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。如果 limit 是 0,则会被当做 1。
    返回值
    此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。如果 delimiter 为空字符串(""),explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit , 那么会返回空的数组, 否则返回包含 string 单个元素的数组。
    
    $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
    $pieces = explode(" ", $pizza);
    print_r($pieces)
    Array
    (
    [0] => piece1
    [1] => piece2
    [2] => piece3
    [3] => piece4
    [4] => piece5
    [5] => piece6
    )
    
    14.implode - 将一个一维数组的值转化为字符串

    join - 将一个一维数组的值转化为字符串,implode的别名

    implode (  [string $glue ,] array $pieces )
    用 glue 将一维数组(pieces)的值连接为一个字符串。
    参数  必需的 描述
    glue    否   默认为空的字符串。
    pieces  是   你想要转换的数组。
    返回值
    返回一个字符串,其内容为由 glue 分割开的数组的值。
    $array = array('lastname', 'email', 'phone');
    $comma_separated = implode(",", $array);
    
    echo $comma_separated; ===>lastname,email,phone
    
    echo "<br/>";
    // 如果分割一个空数组,输出空字符串:
    var_dump(implode('hello', array())); ===> string(0) ""
    
    15.fprintf - 将格式化后的字符串写入到流
    fprintf (resource $handle , string $format [, mixed $args [, mixed $... ]] )
    写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。
    参数  必需的 描述
    handle  是   文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
    format  是   参见 sprintf() 中对 format 的描述。
    args ...    否(取决format) 填写format中定义的占位符
    返回值
    返回写入的字符串长度。
    
    if (!($fp = fopen('currency.txt', 'w'))) {
       return;
    }
    
    $money1 = 68.75;
    $money2 = 54.35;
    $money = $money1 + $money2;
    echo $money  // 将输出 "123.1";
    $len = fprintf($fp, '%01.2f', $money);
    // 将写入 "123.10" 到 currency.txt
    
    echo "写入 $len bytes 到 currency.txt";
    // 使用fprintf的返回值来确定我们写入的字节数
    
    16.hex2bin - 转换十六进制字符串为二进制字符串

    提示:这个函数不是 转换十六进制数字为二进制数字。这种转换可以使用base_convert()函数。

    hex2bin (string $data  )
    转换十六进制字符串为二进制字符串。
    
    参数  必需的 描述
    data    是   十六进制表示的数据
    返回值
    返回给定数据的二进制表示 或者在失败时返回 FALSE。
    如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出 E_WARNING 级别的错误。
    V5.5.1 - 如果输入的字符串是无效的十六进制字符串则抛出一个警告。
    V5.4.4 - 如果输入的字符串有多余将抛出异常。 PHP 5.4.0 起字符串将被静默地接受,但是最后的字节会被截断。
    
    $hex = hex2bin("68656c6c6f20776f726c64");
    var_dump($hex);  ===>string(11) "hello world"
    
    17.bin2hex函数把包含数据的二进制字符串转换为十六进制值
    bin2hex ( string $str  )
    参数  必需的 描述
    str   是 二进制字符串。
    返回值
    返回指定字符串十六进制的表示。
    
    $binary = "11111001";
    $hex = hex2bin(bin2hex($binary));
    echo $hex; ===>11111001
    
    18.htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符
    htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ]  )
    此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。被转换的实体有: &amp;, &quot; (没有设置ENT_NOQUOTES 时), &#039; (设置了 ENT_QUOTES 时), &lt; 以及&gt;。
    参数  必需的 描述
    string  是   要解码的字符串
    flags   否   以下一个或多个标志的位掩码,指定如何处理引号以及要使用的文档类型。 默认为ENT_COMPAT | ENT_HTML401。
    ENT_COMPAT 将转换双引号并单独留下单引号。
    ENT_QUOTES 将转换双引号和单引号。
    ENT_NOQUOTES 将双引号和单引号保留为未转换。
    ENT_HTML401 将代码处理为HTML 4.01。
    ENT_XML1 将代码处理为XML 1。
    ENT_XHTML 将代码处理为XHTML。
    ENT_HTML5 将代码处理为HTML 5。
    V5.4.0增加了 ENT_HTML401、ENT_XML1、 ENT_XHTML 和 ENT_HTML5 等常量。
    返回值
    返回解码后的字符串。
    
    $str = "<p>this -&gt; &quot;</p><br/>";
    注意,这里的引号不会被转换
    echo htmlspecialchars_decode($str, ENT_NOQUOTES);    ===><p>this -> &quot;</p>
    echo htmlspecialchars_decode($str);     ===> <p>this -> "</p>
    
    19.htmlspecialchars - 将特殊字符转换为 HTML 实体
    htmlspecialchars (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]])
    
    某类字符在 HTML 中有特殊用处,如需保持原意,需要用 HTML 实体来表达。 本函数会返回字符转义后的表达。 如需转换子字符串中所有关联的名称实体,使用 [htmlentities()]代替本函数。如果传入字符的字符编码和最终的文档是一致的,则用函数处理的输入适合绝大多数 HTML 文档环境。 然而,如果输入的字符编码和最终包含字符的文档是不一样的, 想要保留字符(以数字或名称实体的形式),本函数以及 htmlentities() (仅编码名称实体对应的子字符串)可能不够用。 这种情况可以使用 **mb_encode_numericentity()** 代替。
    | 字符 | 替换后 |
    | --- | --- |
    | & (& 符号) | &amp; |
    | " (双引号) | &quot;,除非设置了 ENT_NOQUOTES |
    | ' (单引号) | 设置了 ENT_QUOTES 后, &#039; (如果是 ENT_HTML401) ,或者 &apos; (如果是 **ENT_XML1、 ENT_XHTML** 或 **ENT_HTML5**)。 |
    | < (小于) | &lt; |
    | > (大于) | & |
    
    注意,这里的引号会被转换
    $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
    echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
    
    20.lcfirst - 使一个字符串的第一个字符小写
    lcfirst ( string $str )
    $foo = 'HelloWorld';
    $foo = lcfirst($foo);  ===> helloWorld
    
    21.ucfirst - 将字符串的首字母转换为大写
    ucfirst ( string $str)   
    $foo = 'hello world!';
    $foo = ucfirst($foo);   ===> Hello world!
    
    22.levenshtein - 计算两个字符串之间的编辑距离

    可用于查找字符串数组中与输入字符最接近的字符串

    levenshtein ( string $str1 , string $str2 )
    // 输入拼写错误的单词
    $input = 'carrrot';
    
    // 要检查的单词数组
    $words  = array('apple','pineapple','banana','orange', 'radish','carrot','pea','bean','potato');
    
    // 目前没有找到最短距离
    $shortest = -1;
    
    // 遍历单词来找到最接近的
    foreach ($words as $word) {
    
        // 计算输入单词与当前单词的距离
        $lev = levenshtein($input, $word);
    
        // 检查完全的匹配
        if ($lev == 0) {
    
            // 最接近的单词是这个(完全匹配)
            $closest = $word;
            $shortest = 0;
    
            // 退出循环;我们已经找到一个完全的匹配
            break;
        }
    
        // 如果此次距离比上次找到的要短
        // 或者还没找到接近的单词
        if ($lev <= $shortest || $shortest < 0) {
            // 设置最接近的匹配以及它的最短距离
            $closest  = $word;
            $shortest = $lev;
        }
    }
    
    echo "输入的单词是: $input\n";
    if ($shortest == 0) {
        echo "精确匹配发现: $closest\n";
    } else {
        echo "你的意思是: $closest?\n";
    }
    
    输入的单词是: carrrot
    你的意思是: carrot?
    
    23.number_format - 以千位分隔符方式格式化一个数字
    number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
    本函数可以接受1个、2个或者4个参数(注意:不能是3个):如果只提供第一个参数,number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep
    参数  必需的 描述
    number  是   你要格式化的数字
    decimals    是   要保留的小数位数
    dec_point   是   指定小数点显示的字符
    thousands_sep   是   指定千位分隔符显示的字符
    
    $number = 1234.56;
    $english_format_number = number_format($number);
    // 1,235
    
    $nombre_format_francais = number_format($number, 2, ',', ' ');
    // 1 234,56
    
    $number = 1234.5678;
    $english_format_number = number_format($number, 2, '.', '');
    // 1234.57
    
    24.parse_str - 将字符串解析成多个变量
    parse_str ( string $encoded_string [, array &$result ] ) 
    $str = "first=value&arr[]=foo+bar&arr[]=baz";
    
    parse_str($str, $output);
    echo $output['first'];  ===> value
    echo $output['arr'][0]; ===> foo bar
    echo $output['arr'][1]; ===> baz
    
    25.similar_text - 计算两个字符串的相似度
    similar_text (string $first , string $second [, float &$percent ] ) 
    $var_1 = 'PHP IS GREAT';
    $var_2 = 'WITH MYSQL';
    在使用此函数时要注意,如果要计算相似度的百分比,传递字符串的顺序非常重要,实际上,更改变量会产生非常不同的结果,例如:
    similar_text($var_1, $var_2, $percent);
    echo $percent;
    // 27.272727272727
    
    similar_text($var_2, $var_1, $percent);
    echo $percent;
    // 18.181818181818
    
    26.str_replace - 字符串替换 不忽略大小写【str_ireplace 忽略大小写】
    str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )  
    参数  必需的 描述
    search  是   查找的目标值,也就是 needle。一个数组可以指定多个目标。
    replace 是   search 的替换值。一个数组可以被用来指定多重替换。
    subject 是   执行替换的数组或者字符串。也就是 haystack。如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。
    count   否   如果被指定,它的值将被设置为替换发生的次数。
    如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。如果 search 和 replace 都是数组,它们的值将会被依次处理。
    
    $str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
    $order   = array("\r\n", "\n", "\r");
    $replace = '<br />';
    首先替换 \r\n 字符,因此它们不会被两次转换
    $newstr = str_replace($order, $replace, $str)===>Line 1<br />Line 2<br />Line 3<br />Line 4<br />
    
    如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。
    输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...
    由于从左到右依次替换,最终 E 被 F 替换
    $search  = array('A', 'B', 'C', 'D', 'E');
    $replace = array('B', 'C', 'D', 'E', 'F');
    $subject = 'A';
    echo str_replace($search, $replace, $subject) ===> F
    
    如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。
    $letters = array('a', 'p','e');
    $fruit   = array('apple', 'pear');
    $text    = 'a p';
    $output  = str_replace($letters, $fruit, $text); ===> aparparl par
    
    27.str_pad - 使用另一个字符串填充字符串为指定长度
    str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]])  
    
    该函数返回 input 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度。
    参数  必需的 描述
    input   是   输入字符串。
    pad_length  是   如果 pad_length 的值是负数,小于或者等于输入字符串的长度,不会发生任何填充,并会返回 input 。
    pad_string  否   如果填充字符的长度不能被 pad_string 整除,那么 pad_string 可能会被缩短。
    pad_type    否   可选的 pad_type 参数的可能值为 STR_PAD_RIGHT,STR_PAD_LEFT 或 STR_PAD_BOTH。如果没有指定 pad_type,则假定它是 STR_PAD_RIGHT。
    
    $input = "你好";
    echo str_pad($input, 10,'111');   你好1111
    echo str_pad($input, 3,'111');  你好
    
    28.str_repeat - 重复一个字符串
    str_repeat (string $input , int $multiplier )  
    参数  必需的 描述
    input   是   待操作的字符串。
    multiplier  是   input 被重复的次数。 multiplier 必须大于等于 0。如果 multiplier 被设置为 0,函数返回空字符串。
    echo str_repeat("%", 10); ===> %%%%%%%%%%
    
    29.str_split - 将字符串转换为数组
    str_split ( string $string [, int $split_length = 1 ]  )  
    参数  必需的 描述
    string  是   输入字符串。
    split_length    否   每一段的长度。默认1
    返回值
    如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符。如果 split_length 小于 1,返回 FALSE。如果 split_length 参数超过了 string 的长度,整个字符串将作为数组仅有的一个元素返回。
    
    $str = "Hello Friend";
    $arr1 = str_split($str);
    Array
    (
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
    )
    
    $arr2 = str_split($str, 3);
    Array
    (
    [0] => Hel
    [1] => lo
    [2] => Fri
    [3] => end
    )
    
    30.str_word_count - 返回字符串中单词的使用情况
    str_word_count ( string $string [, int $format = 0 [, string $charlist ]]  ) 
    参数  必需的 描述
    string  是   字符串。
    format  否   指定函数的返回值。当前支持的值如下:
    0 - 返回单词数量
    1 - 返回一个包含 string 中全部单词的数组
    2 - 返回关联数组。数组的键是单词在 string 中出现的数值位置,数组的值是这个单词
    charlist    否   附加的字符串列表,其中的字符将被视为单词的一部分。
    
    str_word_count("I love Shanghai & good morning!")===>5
    str_word_count("I love Shanghai & good morning!",1)
    ===>Array
    (
    [0] => I
    [1] => love
    [2] => Shanghai
    [3] => good
    [4] => morning
    )
    str_word_count("I love Shanghai & good morning!",1,"&")
    ===>Array
    (
    [0] => I
    [1] => love
    [2] => Shanghai
    [3] => &
    [4] => good
    [5] => morning
    )
    
    31.strcasecmp - 二进制安全比较字符串(不区分大小写)strcmp(区分大小写)
    strcasecmp ( string $str1 , string $str2 )
    $var1 = "Hello";
    $var2 = "hello";
    print_r(strcasecmp($var1, $var2));   ===>0
    print_r(strcmp($var1, $var2)); ===> -32
    
    32.str_shuffle() 函数打乱一个字符串,使用任何一种可能的排序方案
    str_shuffle ( string $str  )  
    $str = 'abcdef';
    $shuffled = str_shuffle($str) ===> 输出类似于: bfdaec
    
    33.strchr - 查找字符串的首次出现。 别名 strstr()
    提示:该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
    提示:如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。
    strchr (string $haystack , mixed $needle [, bool $before_needle = FALSE ])
    参数          必需的     描述
    haystack       是              输入字符串。
    needle     是             如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。
    before_needle   否           若为 TRUE,将返回 needle 在 haystack 中的位置之前的部分。
    返回值
    返回字符串的一部分或者 FALSE(如果未发现 needle)。
    
    $email  = 'name@example.com';
    $domain = strstr($email, '@');
    echo $domain; ===> @example.com
    $user = strstr($email, '@', true); 
    echo $user; ===> name
    
    34.strip_tags - 从字符串中去除 HTML 和 PHP 标记,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。
    strip_tags (string $str [, string $allowable_tags ])  
    参数  必需的 描述
    str 是   输入字符串。
    allowable_tags  否   使用可选的第二个参数指定不被去除的字符列表。
    
    
    $text = '<p>尝试段落。</p><!-- Comment --> <a href="#fragment">其他文字</a>';
    echo strip_tags($text);===>尝试段落。 其他文字
    // 允许 <p> 和 <a>
    echo strip_tags($text, '<p><a>');===><p>尝试段落。</p> <a href="#fragment">其他文字</a>
    
    35.stripos - 查找字符串首次出现的位置(不区分大小写) 与 strpos() 不同,stripos() 不区分大小写。
    stripos ( string $haystack , string $needle [, int $offset = 0 ])  
    参数  必需的 描述
    haystack    是   在该字符串中查找。
    needle  是   注意 needle 可以是一个单字符或者多字符的字符串。如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符顺序值。
    offset  否   可选的 offset 参数,从字符此数量的开始位置进行搜索。 如果是负数,就从字符末尾此数量的字符数开始统计。
    
    返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0,而不是 1。 如果未发现 needle 将返回 FALSE。
    此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值(整数0)。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。
    
    $findme    = 'a';
    $mystring1 = 'xyz';
    $mystring2 = 'ABC';
    
    $pos1 = stripos($mystring1, $findme);
    $pos2 = stripos($mystring2, $findme);
    
    // 'a' 当然不在 'xyz' 中
    if ($pos1 === false) {
        echo "字符串 '$findme' 没有在 '$mystring1' 中找到。";
    }
    ===>字符串 'a' 没有在 'xyz' 中找到。
    
    // 注意这里使用的是 ===。简单的 == 不能像我们期望的那样工作,
    // 因为 'a' 的位置是 0(第一个字符)。
    if ($pos2 !== false) {
        echo "我们找到 '$findme' 在 '$mystring2' 中的索引为 $pos2";
    }
    ===>我们找到 'a' 在 'ABC' 中的索引为 0
    
    36.strlen - 获取字符串长度 注意:返回字节数而不是字符串中的字符数。
    strlen (string $string)  
    
    参数  必需的 描述
    string  是   需要计算长度的字符串。
    $str = 'abcdef';
    echo strlen($str); // 6
    $str = ' ab cd ';
    echo strlen($str); // 7
    
    37.strpbrk - 在字符串中查找一组字符的任何一个字符
    strpbrk (string $haystack , string $char_list)  
    参数  必需的 描述
    haystack    是   在此字符串中查找 char_list。
    char_list   是   该参数区分大小写。
    返回值
    返回一个以找到的字符开始的子字符串。如果没有找到,则返回 FALSE。
    
    $text = 'This is a Simple text.';
    // 输出 "is is a Simple text.",因为 'i' 先被匹配
    echo strpbrk($text, 'mi');
    
    // 输出 "Simple text.",因为字符区分大小写
    echo strpbrk($text, 'S');
    
    38.strrev - 反转字符串
    strrev (string $string )  
    echo strrev("Hello world!"); ===> "!dlrow olleH"
    
    39.strspn - 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
    strspn (string $subject , string $mask [, int $start [, int $length ]])  
    
    返回 subject 中全部字符仅存在于 mask 中的第一组连续字符(子字符串)的长度。如果省略了 start 和 length 参数,则检查整个 subject 字符串;如果指定了这两个参数,则效果等同于调用 strspn(substr($subject, $start, $length), $mask)(更多信息,参见 substr 函数 )。
    $var = strspn("42 is the answer to the 128th question.", "1234567890");,$var 将被指派为 2,因为 '42' 是 subject 中第一段全部字符都存在于 '1234567890' 的连续字符。
    
    strspn("foo", "f", 1, 2); ===> 打印: 2
    
    40.strtolower - 将字符串转化为小写 ,strtoupper 将字符串转化为大写
    $str = "ABCDEFG";
    $str = strtolower($str);
    echo $str; // 打印 abcdefg
    $str=strtoupper($str);
    echo $str; // 打印 ABCDEFG    
    
    41.strtr - 转换指定字符

    俩种方式:
    1.strtr ( string str , stringfrom , string $to )

    2.strtr ( string str , arrayreplace_pairs )

    echo strtr("I Love you","Lo","lO");
    得到的结果是: I lOve yOu
    从这个结果我们能够得到一些结论:
    1.strtr它是区分大小写的;
    2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
    再举一个特殊例子,说明这个php的sttr函数的怪异
    
    echo strtr("I Love you","Love","");
    结果是: I Love you
    什么也不会改变,所以strtr需要注意的是:
    3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
    
    再次举例strtr函数的另一种情况:
    echo strtr("I Loves you","Love","lOvEA");
    结果是: I lOvEs yOu
    注意看第三个参数的A,在结果中并没有出现。
    4.用strtr以少换多会出错。
    
    第二种用法:
    $trans = array("hello" => "hi", "hi" => "hello");
    echo strtr("hi all, I said hello", $trans);===>hello all, I said hi
    
    42.substr_count - 计算字串出现的次数
    substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]]  )   
    $text = 'This is a test';
    echo strlen($text); // 14
    
    echo substr_count($text, 'is'); ===> 2
    
    字符串被简化为 's is a test',因此输出 1
    echo substr_count($text, 'is', 3);
    
    字符串被简化为 's i',所以输出 0
    echo substr_count($text, 'is', 3, 3);
    
    因为 5+10 > 14,所以生成警告
    echo substr_count($text, 'is', 5, 10);
    
    输出 1,因为该函数不计算重叠字符串
    $text2 = 'gcdgcdgcd';
    echo substr_count($text2, 'gcdgcd');
    

    相关文章

      网友评论

          本文标题:PHP字符串处理函数 区别 mb_ 系列函数

          本文链接:https://www.haomeiwen.com/subject/qozqqltx.html