PHP 常用的字符串函数
PHP 工作中常用的字符串函数
mb_xxxx和xxxx函数的却别:
mb_xxxx和xxxxd函数不同的是,mb_xxxxx中的$str 中字母字符的检测是根据字符的 Unicode 属性。因此函数的行为不会受语言设置的影响,能够转换任意具有“字母”属性的字符。
所以mb_xxxx可以比较好的处理中文。
一、关于字符串大小写转换的函数
1、strtoupper($string):将字符串$string中的字母转换成大写,并将转化后的字符串返回;
$str = '这是一个string'; echo strtoupper($str); //输入结果: //这是一个STRING
2、mb_strtoupper():与 strtoupper() 函数类似,同样可以将字符串中的字母转化为大写,并且 mb_strtoupper() 函数还可以设置参数的字符编码
mb_strtoupper($str [, $encoding = mb_internal_encoding()])
//$str 是需要转化的字符串,$encoding 是一个可选参数,用来设置参数的字符编码。
3、strtolower($string):将字符串$string中的字母转换成小写,并将转化后的字符串返回;
$str = '这是一个STRing'; echo strtolower($str); //输出结果: //这是一个string
4、mb_strtolower():与strtolower()函数类似,同样可以讲字符串中的字母转化为小写,并且还可设置参数的字符编码
mb_strtolower($str [, $encoding = mb_internal_encoding()]) //$str 是需要转化的字符串,$encoding 是一个可选参数,用来设置参数的字符编码。
5、ucfirst($string):将字符串$string中的第一个字母转化成大写;
$str = '这是一个string'; $str1 = 'hello world!'; echo ucfirst($str); echo '<br/>'; echo ucfirst($str1); //输出结果: //这是一个string //Hello world!
6、lcfirst($string):将字符串$string中的第一个字母转化成小写;
$str = '这是一个string'; $str1 = 'HELLO world!'; echo lcfirst($str); echo '<br/>'; echo lcfirst($str1); //输出结果: //这是一个string //hELLO world!
7、ucwords():将字符串中的每个单词的首字母转换成大写;
ucwords($str [, $delimiters = "\t\r\n\f\v" ]) //$str 为需要转化的字符串;$delimiters 为可选参数,用来表示单词分隔符,默认是空格符、制表符、换行符、回车符、水平线以及竖线。
$str = 'hello world!'; $str1 = 'HELLO WORLD!'; $str2 = 'www.baidu.com'; echo ucwords($str); echo '<br/>'; echo ucwords($str1); echo '<br/>'; echo ucwords($str2); echo '<br/>'; echo ucwords($str2,'.'); //输出结果: //Hello World! //HELLO WORLD! //Www.baidu.com //Www.Baidu.Com
8、mb_convert_case():可以对字符串进行大小写转换
mb_convert_case($str, $mode [, $encoding = mb_internal_encoding()]) //$str 是需要转换的字符串; //$mode 是转换模式,可以是 MB_CASE_UPPER、 MB_CASE_LOWER 和 MB_CASE_TITLE 的其中一个; //MB_CASE_UPPER:将字符串转化成大写 //MB_CASE_UPPER:将字符串转化成小写 //MB_CASE_TITLE:将首字母大写,其他字母小写 //$encoding 是参数的字符编码,可以省略。
$str = 'hello world!'; $str1 = 'HELLO WORLD!'; $str2 = 'www.baidu.com'; echo mb_convert_case($str,MB_CASE_UPPER);echo '<br/>'; echo mb_convert_case($str1,MB_CASE_LOWER); echo '<br/>'; echo mb_convert_case($str2,MB_CASE_TITLE); echo '<br/>'; echo mb_convert_case($str1,MB_CASE_TITLE); echo '<br/>'; echo mb_convert_case($str,MB_CASE_TITLE); //输出结果: //HELLO WORLD! //hello world! //Www.baidu.com //Hello World! //Hello World!
和 strtolower()、strtoupper() 函数相比,mb_convert_case() 函数大小写转换的执行根据 Unicode 字符属性的基础。因此 mb_convert_case() 函数的行为不受语言环境(locale)设置的影响,能够转换任意具有“字母”属性的字符。
二、关于字符串查找的函数
1、strpos():用来查找字符串首次出现的位置(区分大小写);
mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 参数说明: ·haystack:在该字符串中查找; ·needle:needle 可以是一个单字符或者多字符的字符串。如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符顺序值 ·offset:偏移量。可选的 offset 参数允许你指定从 haystack 中的哪个字符开始查找,返回的位置数字值仍然相对于 haystack 的起始位置 返回:返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量) 注: ·字符串位置起始于 0,而不是 1; ·如果未发现needle,则返回false;
⚠️ 此函数的偏移量不能是负数!
eg.
$str = 'This is a string'; echo strpos($str,'s'); //输出:3 echo strpos($str,'s',4); //输出:6 echo strpos($str,'is'); //输出:2 echo strpos($str,' s'); //输出:9 echo strpos($str,'T'); //输出:0 echo strpos($str,'t'); //输出:11
2、stripos():和strpos()函数类似,用来查找字符串首次出现的位置;不同的是它不区分大小写。
语法和strpos()一样
⚠️ 此函数的偏移量不能是负数!
eg.
$str = 'This is a string'; echo stripos($str, 's'); //输出:3 echo stripos($str,'T'); //输出:0 echo stripos($str,'t'); //输出:0
3、strrpos():用来计算指定字符串在目标字符串中最后一次出现的位置(区分大小写)
语法和strpos()一样
⚠️ 如果是负数的偏移量,将会导致查找在字符串结尾处开始的计数位置处结束。
eg.
$str = 'This is a string'; echo strrpos($str,'g'); //输出:15 echo strrpos($str,'g',-1);//输出:15 echo strrpos($str,'s'); //输出:10 echo strrpos($str,'s',-7);//输出:6 echo strrpos($str,'i'); //输出:13 echo strrpos($str,'i',-4);//输出:5
4、strripos():与strrpos()函数类似,用来查找字符串在目标字符串中最后一次出现的位置,不同的是它不区分大小写。
语法和strpos()一样。
⚠️ 负数偏移量将使得查找从字符串的起始位置开始,到 offset 位置为止。
eg.
$str = 'This is a string'; echo strrpos($str,'T'); //输出:0 echo '<br/>'; echo strrpos($str,'t'); // 输出:11 echo strripos($str,'T'); //输出:11 echo '<br/>'; echo strripos($str,'t'); //输出:11
三、关于字符串替换的函数
1、str_replace():使用新的字符串替换原来字符串中指定的字符串(区分大小写)
mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 参数说明: ·search: 原来字符串或数组中要替换的字符串 ·replace:替换search新的字符串 ·subject:原来字符串 ·count:表示执行替换的次数 返回:返回一个字符串或者数组
eg.
$str = 'This is a string'; $search = 'This'; $search1 = 'this'; $replace = 'That'; echo str_replace($search, $replace, $str); // 输出:That is a string echo str_replace($search1, $replace, $str); //输出:This is a string
2、str_ireplace():同str_replace()用法一样,区别是它不区分大小写;
$str = 'This is a string'; $search = 'This'; $search1 = 'this'; $replace = 'That'; echo str_ireplace($search, $replace, $str); //输出:That is a string echo str_ireplace($search1, $replace, $str); //输出:That is a string
$str = 'This is a string'; $search = 'This'; $search1 = 'this'; $search2 = 's'; $replace = 'That'; echo str_ireplace($search2, 'A', $str); //输出:ThiA iA a Atring echo str_replace($search2, 'A', $str,$count);//输出:ThiA iA a Atring echo $count;//输出:3
3、substr_replace():替换字符串的子串
mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。
注:
如果 start 为正数,替换将从 string 的 start 位置开始。如果 start 为负数,替换将从 string 的倒数第 start 个位置开始。
如果设定了 length 参数并且为正数,就表示 string 中被替换的子字符串的长度。如果设定为负数,就表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么默认为 strlen(string)(字符串的长度)。当然,如果 length 为 0,那么这个函数的功能为将 replacement 插入 string 的 start 位置处。
$str = 'Hello world,hello world'; $replace = 'Hi'; echo substr_replace($str, $replace, 0); //输出:Hi echo substr_replace($str, $replace, 0,2); //输出:Hillo world,hello world echo substr_replace($str, $replace, 0,5); //输出:Hi world,hello world echo substr_replace($str, $replace, 0,0); //输出:HiHello world,hello world
四、有关字符串截取的函数
1、substr():从字符串的指定位置截取一定长度的字符串;这段被截取的字符可称为“子串”或者“子字符串”;
substr($string, $start [, $length]) 参数说明如下: $string:需要截取的字符串,该字符串至少含有一个字符; $start:截取字符串的起始位置; 如果 $start 是非负数,那么字符串将从 $string 的第 $start 个字符处开始截取,$start 从 0 开始计算。 如果 $start 是负数,那么字符串将从 $string 结尾处向前数第 $start 个字符开始,$start 从 -1 开始计算。例如在字符串“abcdef”中,在 -1 位置的字符是“f”;
如果 $string 的长度小于 $start,将返回 FALSE。 $length:可选参数,表示截取字符串的长度。 如果 $length 为正数,那么字符串将从 $start 位置向后截取最多 $length 个字符; 如果 $length 为负数,那么 $string 末尾的 $length 个字符将会被省略(若 $start 是负数则从字符串尾部算起); 如果 $length 的值为 0,FALSE 或 NULL,那么将返回一个空字符串; 如果没有提供 $length,那么返回的子字符串将从 $start 位置开始直到字符串的结尾。
eg.
$str = 'Hello world,hello world'; $replace = 'Hi'; echo substr($str,0); //输出:Hello world,hello world echo '<br>'; echo substr($str,1);// 输出:Hello world,hello world echo '<br>'; echo substr($str,0,1);//输出:H echo '<br>'; echo substr($str,-1,1);//输出:d echo '<br>'; echo substr($str, 1,-1);//输出:ello world,hello worl echo '<br>'; echo substr($str, -5,-1);//输出:worl echo '<br>'; echo substr($str, -5,-4);//输出:w
五、有关去除字符串两边的空格的函数
1、trim():去除字符串两边的空格或其他字符;
trim($str [, $character_mask = " \t\n\r\0\x0B"]) 参数说明: ·$str:待处理的字符串; ·$character_mask:可选参数,用于指定所有要去除的字符,也可以使用“..”列出一个字符范围。 如果不指定 $character_mask 参数,trim() 函数将去除下面这些字符: " ":普通空格符; "\t":制表符; "\n":换行符; "\r":回车符; "\0":空字节符; "\x0B":垂直制表符。
eg.
$str = ' @Hello world,hello world@ '; var_dump(trim($str)); //输出:string(25) "@Hello world,hello world@" echo '<br/>'; var_dump(trim($str,'@'));//输出:string(27) " @Hello world,hello world@ " echo '<br/>'; var_dump(trim($str,' @'));//输出:string(23) "Hello world,hello world"
2、ltrim():去除字符串开头的空白字符或者其它指定的字符;同trim()语法一样,不同的是,它只能处理左边也就是字符串开头的的字符串;
$str = ' @Hello world,hello world@ '; var_dump(ltrim($str)); //输出:string(26) "@Hello world,hello world@ " echo '<br/>'; var_dump(ltrim($str,'@'));//输出:string(27) " @Hello world,hello world@ " echo '<br/>'; var_dump(ltrim($str,' @'));//输出:string(25) "Hello world,hello world@ "
3、rtrim():去除字符串结尾的空白字符或者其他指定的字符;同trim()语法一样,不同的是,它只能处理右边也就是字符串结尾的字符串;
$str = ' @Hello world,hello world@ '; var_dump(rtrim($str));//输出:string(26) " @Hello world,hello world@" echo '<br/>'; var_dump(rtrim($str,'@'));//输出:string(27) " @Hello world,hello world@ " echo '<br/>'; var_dump(rtrim($str,' @'));//输出:string(25) " @Hello world,hello world"
六、有关字符串长度的函数
1、strlen():计算字符串的长度;
int strlen ( string $str ) 参数说明: $str 表示被计算的字符串
$str = ' @Hello world,hello world@ '; $str1 = '这是一个string'; var_dump($str); //输出:string(27) " @Hello world,hello world@ " var_dump($str1);//输出:string(18) "这是一个string" echo strlen($str);//输出:27 echo mb_strlen($str);//输出:27 echo strlen($str1);//输出:18 echo mb_strlen($str1);//输出:10
七、有关字符串转义的函数
1、addslashes():转义字符串,所谓转义,就是在某些特殊字符前面加上转义符号\
,这些特殊字符包括单引号'
、双引号"
、反斜线\
与空字符NULL
。
string addslashes(string $str) 参数说明: $str 表示要被转义的字符; 返回:转义后的字符串;
$str = "I'm a beauty"; echo addslashes($str); //输出:I\'m a beauty
2、stripslashes():还原经addslashes()转义过的字符串
string stripslashes(string $str) 参数说明: $str 表示经addslashes()转义过的字符串 返回:返回未经转义的字符串
$str = "I'm a beauty"; $str1 = addslashes($str); echo stripslashes($str1); //输出:I'm a beauty
八、有关字符串重复的函数
1、str_repeat():重复一个字符串;
string str_repeat(string $str,int $n) 参数说明: $str 表示要重复的字符串; $n 重复的次数; 返回:返回str重复n次的字符串
⚠️ n必须大于0,如果n=0,则返回一个空字符串;
$str = "I'm a beauty! <br/>"; echo '重要的事儿重复3遍:<br/>'.str_repeat($str, 3); //输出: 重要的事儿重复3遍: I'm a beauty! I'm a beauty! I'm a beauty!
九、有关随机打乱字符串的函数
1、str_shuffle():随机打乱字符串中的所有字符;
string str_shuffle ( string $str ) 参数说明: $str 表示未经打乱的字符串 返回:返回顺序打乱的字符串
$str = "I'm a beauty!"; echo str_shuffle($str); echo '<br/>'; echo str_shuffle($str); echo '<br/>'; echo str_shuffle($str); //输出: me !a'Ituyb a ey'um baIt!a ! tbeIyam a'u
十、有关字符串转换成数组的函数
1、explode():将字符串按照特定的分隔符分割成若干个子串,并将自卸子串组成数组返回;
explode($delimiter, $string [, $limit]) 参数说明: ·$delimiter:表示用于分割字符串的分隔符; ·$string:需要分割的字符串; ·$limit:可选参数,可以为空,规定要返回数组元素的数目; ·$limit 不为空且为正数,则返回的数组最多包含limit个元素,最后一个元素包含了string剩下的所有字符; ·$limit 不为空且为负数,自返回除了最后limit个元素之外的所有元素; ·$limit 等于0,则会被当作1; ·$limit 为空,则返回所有元素 返回:数组
⚠️ 如果$delimiter为空字符串"",程序会提示warning,且函数会返回FALSE;
⚠️ 如果$delimiter的值在string中找不到且使用了负数的$limit,则会返回空的数组,否则返回只有一个元素(string)的数组;
eg.
$str = "I'm a beauty!"; var_dump(explode(" ", $str)); var_dump(explode(" ", $str,2)); var_dump(explode(" ", $str,-1)); var_dump(explode(" ", $str,0)); var_dump(explode("@", $str)); var_dump(explode("@", $str,-1)); //输出: array(3) { [0]=> string(3) "I'm" [1]=> string(1) "a" [2]=> string(7) "beauty!" } array(2) { [0]=> string(3) "I'm" [1]=> string(9) "a beauty!" } array(2) { [0]=> string(3) "I'm" [1]=> string(1) "a" } array(1) { [0]=> string(13) "I'm a beauty!" } array(1) { [0]=> string(13) "I'm a beauty!" } array(0) { }