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) { }

浙公網安備 33010602011771號