PHP函数篇(二)---字符串函数篇(1)

699 阅读2分钟

本文已参与【新人创作礼】活动 ,一起开启掘金创作之路

# 1、PHP 中如何正确统计中文字数(相关字符串函数)

    # 字符串选自2022年网络热词 emo ——情绪低落,抑郁  耗子尾汁——好自为之
    
    var_dump(strlen("耗子尾汁EMO"));             
    # 一个中文字换算成3个字节+3个英文字母 => int(15)

    var_dump(mb_strlen("耗子尾汁EMO", 'UTF-8'));
    # mb_strlen 不管中文还是英文,都算1个字节 int(7)
    
    var_dump(mb_strwidth("耗子尾汁EMO"));        
    # mb_strwidth 中文2个字节,英文1个字节 int(11)
    

# 2、PHP字符串中去除特殊字符的函数

trim、ltrim、rtrim默认可去除的特殊字符

默认字符默认字符
"",普通空格字符"\t",制表符
"\n",换行"\r",回车
"\o",字节符"\xoB",垂直制表符
    $str = ' #666666# ';

    $str = trim($str);
    
    var_dump(trim($str));     # 输出 string(8) "#666666#" 默认去掉""(空格)

    var_dump(trim($str,'#')); # 输出 string(6) "666666"  去掉 "#" 符

trim去除空格以外的默认特殊符号时需使用双引号不能使用单引号

    $str = ' \t520520 ';
    
    var_dump(trim($str));
    # 输出 string(8) "\t520520"
    
    $str = " \t520520 ";
    
    var_dump(trim($str));
    # 输出 string(6) "520520"

trim去除首尾处的任何字符

    $str = " 20000520 20220520 ";
    
    var_dump(trim($str));
    # 输出 string(17) "20000520 20220520"

ltrim删除字符串开头的默认字符(或其他字符)

    $str = " \n666 888 ";
    var_dump(ltrim($str));
    # 输出 " string(8) "666 888 " 
    
    $str = "# 520 1314#";
    var_dump(ltrim($str,'#'));
    # 输出 string(10) " 520 1314#" 
    
    var_dump(ltrim($str,' #'));
    # 输出 string(9) "520 1314#"

rtrim删除字符串尾部的空格字符(或其他字符)

    $str = " #520 1314\n ";
    var_dump(rtrim($str));
    # 输出  string(10) " #520 1314"

    $str = " #520 1314 #";
    var_dump(rtrim($str,' #'));
    # 输出  string(10) " #520 1314"

str_replace--子元素字符串替换

mixed str_replace(mixed search,mixedsearch,mixed replace,mixed subject[,int &count])

类型含义
mixed:混合型
mixed $search:查找目标值
mixed $replace:目标值的替换值
mixed $subject:执行替换的数组或字符串
int &$count:可选,替换发生的次数
    # 例子1
    $str = "#5201314#";
    
    var_dump(str_replace('#','',$str));
    
    # 输出 string(7) "5201314" 

    # 例子2
    $str = " #520 #1314 ";
    
    var_dump(str_replace(array(' ','#'),array('',''),$str));
    
    # 输出 string(7) "5201314"

# 3、字符大小写转换的PHP字符串函数

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

#中文含义 天生我才必有用

$str = "All things in their being are good for something";

    $str = strtolower($str);
    
    var_dump($str);
    
    # 输出 string(48) "all things in their being are good for something"

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

    $str = strtoupper($str);
    
    var_dump($str);
    
    # 输出 string(48) "ALL THINGS IN THEIR BEING ARE GOOD FOR SOMETHING"

ucfirst($str) 将字符串的第一个字符转换为大写

    $str = "this is MY computer";
    
    var_dump((ucfirst($str)));

    # 输出 string(19) "This is MY computer"

ucwords($str) 将每个单词的首字母转换为大写

     var_dump(ucwords("hello world!"));
     
     # 输出 string(12) "Hello World!"

# 4、字符串分割 explodestr_split 函数

explode() 使用一个字符串分割另一个字符串

本函数为 implode() 的反函数,使用一个字符串分割另一个字符串,返回一个数组

array explode( string separator, string string [, int limit] )

参数说明:
参数说明
separator分割标志
string需要分割的字符串
limit可选,表示返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分,支持负数。
     $str = 'apple,pear,banana,peach';

     var_dump(explode(',',$str));
     # 输出 array(4) { [0]=> string(5) "apple" [1]=> string(4) "pear" [2]=> string(6) "banana" [3]=> string(5) "peach" }

     var_dump(explode(',',$str, 2));
     # 输出 array(2) { [0]=> string(5) "apple" [1]=> string(17) "pear,banana,peach" }
     
    //负数的 limit(自 PHP 5.1 起)

     var_dump(explode(',',$str, -1));
     # 输出 array(3) { [0]=> string(5) "apple" [1]=> string(4) "pear" [2]=> string(6) "banana" }

str_split() 将字符串分割为一个数组,成功返回一个数组。

array str_split( string string [, int length])

参数说明:
参数说明
string需要分割的字符串
length可选,表示每个分割单位的长度,不可小于1
    $str  = 'helloworld';

    $arr1 = str_split($str);

    $arr2 = str_split($str, 5);

    print_r($arr1);
    # 输出 Array ( [0] => h [1] => e [2] => l [3] => l [4] => o [5] => w [6] => o [7] => r [8] => l [9] => d ) 

    print_r($arr2);
    # 输出 Array ( [0] => hello [1] => world )