陣列、字串和資料庫是我們函數裡面最、最、最常用的三類函數,數組和資料庫我們現在還沒講到,等講到的時候我們再來跟大家細說。
當然PHP的字串函數也有很多。我們最常使用的兩個系列的字串:
1.單字節字串處理函數
2.多位元組字串處理函數
3.字串編碼轉換函數
我們先來談談為什麼要學這麼多函數:
1.我們學的是中文,是雙位元組或三位元組的。老外的函數只能處理英文和數字這些單字節的字串處理不鳥中文。達不到我們的功能需求
2.有的時候需要做不同字元編碼間的轉換,例如:把GBK的轉為UTF-8
3.英文這些字元在電腦裡又是必須要處理的
因此,我們要學三種類型的常用字串函數。
我們來貼個PHP手冊的連結給大家看看:
#看到這連結裡面的手冊是不是被嚇的不行?
當然,你不用學這麼多。 PHP中文網已經幫你把最常用的,需要強制背訟的準備好了。
之前都教過大家用,那你開始背函數吧。
PHP常用函數:
函數名稱 | 描述 | 實例 |
---|---|---|
trim() | 刪除字串兩端的空格或其他預定義字元 | "$str = "\r\nHello World!\r\n"; echo trim($str); |
rtrim() | 刪除字串右邊的空格或其他預定義字元 | "$str = "Hello World!\n\n"; echo rtrim ($str);" |
chop() | rtrim()的別名 | #同上 |
刪除字串左邊的空格或其他預定義字元 | "$str = "\r\nHello World!"; echo ltrim($str);" | |
迴路中的目錄部分(我們把它歸在字串函數裡了) | echo dirname("c: /testweb/home.php"); | |
把字串填入指定的長度 | $str = "Hello World "; echo str_pad($str,20,"."); | |
重複使用指定字串 | echo str_repeat( ".",13); | |
#把字串分割到陣列中 | print_r(str_split("Hello")) ; | |
反轉字串 | #echo strrev("Hello World!"); | |
依照指定長度對字串進行折行處理 | "$str = ""An example on a long word is: Supercalifragulistic""; echo wordwrap( $str,15);" | |
#隨機地打亂字串中所有字元 | echo str_shuffle("Hello World" ); | |
將字串解析成變數 | "parse_str("id=23&name=John%20Adams",$myArray ); print_r($myArray);" | |
透過千位元分組來格式化數字 | "echo number_format("1000000 "); echo number_format("1000000",2); echo number_format("1000000",2,"","",""."");" | |
字串轉為小寫 | echo strtolower("Hello WORLD!"); | |
字符字串轉為大寫 | echo strtoupper("Hello WORLD!"); | |
字串首字母大寫 | echo ucfirst("hello world"); | |
字串每個單字首字轉為大寫 | echo ucwords ("hello world"); | |
#把字元轉換成HTML實體 | $str = ""John & 'Adams' ""; echo htmlentities($str, ENT_COMPAT); | |
預先定義字元轉html編碼 | # | |
nl2br() | \n轉義為 標籤 | echo nl2br("One line.\nAnother line."); |
strip_tags() | 剝去HTML、XML 以及PHP 的標籤 | echo strip_tags("Hello world!" ); |
addcslashes() | 在指定的字元前面加上反斜線轉義字串中字元 | $str = ""Hello , my name is John Adams." echo $str; echo addcslashes($str,'m');" |
stripcslashes() | #刪除由addcslashes()新增的反斜線 | echo stripcslashes("Hello, \my na\me is Kai Ji\m."); |
addslashes() | 指定預定義字元前加上反斜線 | $str = "Who's John Adams?";echo addslashes($str); |
stripslashes() | 刪除由addslashes()新增的轉義字元 | echo stripslashes("Who\'s John Adams?"); |
quotemeta() | 在字串中某些預先定義的字元前面加上反斜線 | $str = "Hello world. (can you hear me?)"; echo quotemeta($str); |
chr() | 從指定的ASCII 值傳回字元 | echo chr(052); |
ord() | 傳回字串第一個字元的ASCII值 | echo ord("hello"); |
strcasecmp() | 不區分大小寫比較兩個字串 | echo strcasecmp("Hello world!","HELLO WORLD!"); |
strcmp( ) | 區分大小寫比較兩個字串 | |
#strncmp() | 比較字串前n個字元,區分大小寫 | # |
strncasecmp() | 比較字串前n個字元,不區分大小寫 | int strncasecmp ( string $str1 , string $str2 , int $len ) |
strnatcmp() | 自然順序法比較字串長度,區分大小寫 | int strnatcmp ( string $str1 , string $str2 ) |
strnatcasecmp() | 自然順序法比較字串長度,不區分大小寫 | int strnatcasecmp ( string $str1 , string $str2 ) |
chunk_split() | 將字串分成小塊 | str chunk_split(str $body[,int $len[,str $end]]) |
strtok() | 切開字串 | str strtok(str $str,str $token) |
explode() | 使用字串為標誌分割另一個字串 | array explode(str $sep,str $str[,int $limit ]) |
implode() | 同join,將陣列值用預訂字元連接成字串 | string implode ( string $glue , array $pieces ) |
substr() | 截取字串 | string substr ( string $string , int $start [, int $length ] ) |
str_replace() | 字串取代操作,區分大小寫 | mix str_replace(mix $search,,mix $replace,mix $subject [,int &$num]) |
str_ireplace() | #字串取代運算,不區分大小寫 | mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] ) |
#substr_count() | 統計一個字串,在另一個字串中出現次數 | int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] ) |
#substr_replace() | 取代字串中某字串為另一個字串 | mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] ) |
#similar_text() | 傳回兩個字串相同字元的數量 | int similar_text(str $str1,str $str2) |
strchr( ) | 傳回一個字串在另一個字串中開始位置到結束的字串 | string strstr ( string $str, string $needle , bool $before_needle ) |
strrchr() | 返回一個字串在另一個字串中最後一次出現位置開始到末尾的字串 | string strrchr ( string $haystack , mixed $needle ) |
stristr() | 傳回一個字串在另一個字串中開始位置到結束的字串,不區分大小寫 | string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) |
strtr() | 轉換字串中的某些字元 | string strtr ( string $str , string $from , string $to ) |
strpos() | 尋找字串中某字元最先出現的位置 | int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) |
stripos() | 尋找字串中某字元最先出現的位置,不區分大小寫 | int stripos ( string $haystack , string $needle [, int $offset ] ) |
strrpos() | 尋找某字串中某字元最後出現的位置 | int strrpos ( string $haystack , string $needle [, int $offset = 0 ] ) |
strripos() | 尋找某字串中某字元最後出現的位置,不區分大小寫 | int strripos ( string $haystack , string $needle [, int $offset ] ) |
strspn() | #在傳回字串中首次符合mask的子字串長度 | int strspn ( string $str1 , string $str2 [, int $start [, int $length ]] ) |
#strcspn() | 傳回字串中不符合mask的字串的長度 | int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] ) |
str_word_count() | 統計字串含有的單字數 | mix str_word_count(str $str,[]) |
#strlen() | 統計字串長度 | int strlen(str $str) |
count_chars() | ##統計字符字串中所有字母出現次數(0..255)mixed count_chars ( string $string [, int $mode ] ) | |
字串md5編碼 | $str = "Hello"; echo md5($str) | |
取得字串的部分 | string mb_substr ( string $str , int $start [, int $ length = NULL [, string $encoding = mb_internal_encoding() ]] ) | |
##設定/取得HTTP 輸出字元編碼 | mixed mb_http_output (#設定/取得HTTP 輸出字元編碼 | mixed mb_http_output (##設定/取得HTTP 輸出字元編碼 |
mixed mb_http_output (#設定/取得HTTP 輸出字元編碼 | mixed mb_http_output ( [ string $encoding = mb_http_output() ] ) | |
取得字串的長度 | mixed mb_strlen ( string $str [, string $ encoding = mb_internal_encoding() ] ) | |
string iconv ( string $in_charset , string $ out_charset , string $str ) | iconv_substr | |
iconv_get_encoding | 取得iconv 擴充的內部設定變數 | |
mb_substr_count | #統計字串出現的次數 | |
mb_check_encoding | #檢查字串在指定的編碼裡是否有效 | |
註:mb_* 和iconv_* 他們可以處理多字節字符,例如:中文。
中文主要用的是GBK和utf-8兩種編碼格式。
GBK和utf-8是兩個不同的編碼委員會對於漢字進行的編碼的標準。
他們規定GBK是雙字節,也就是一個漢字佔用2Bytes。
utf-8是三字節,一個漢字佔三個位元組長度的儲存空間。