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,FALSENULL,那么将返回一个空字符串; 如果没有提供 $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) {
}

 

posted @ 2020-04-13 20:39  早上六点半遇见五月天  Views(354)  Comments(0Edit  收藏  举报