本文已参与【新人创作礼】活动 ,一起开启掘金创作之路
# 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 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、字符串分割 explode 与 str_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 )