摘要:因此,當需要操作字符集的字符串時候,請務必安裝擴展,并使用相應的函數代替原生的字符串函數中國擴展大部分的函數都需要基于一個編碼內部編碼來處理,請務必統一使用編碼,這個大部分可以在中配置。
創建
PHP 支持 4 種方式來創建一個字符串:單引號、雙引號、heredoc 語法結構和 nowdoc 語法結構。
在單引號字符串中,變量和特殊字符將不會被轉義替換,除了反斜杠和單引號本身:
echo "Arnold once said: "I"ll be back""; # Arnold once said: "I"ll be back" echo "You deleted C:*.*?"; # You deleted C:*.*?
能夠識別字符串中的變量和轉義序列:
$juice = "apple"; echo "$juice juice."; # apple juice. echo "Hello World!"; #Hello #World!
與雙引號字符串相似。結束標記必須頂頭寫,不能有縮進和空格,且在結束標記末尾要有分號;標記之間的變量可以被正常解析,但是函數則不可以。常用在輸出包含大量 HTML 文檔的時候。
$str = "heredoc"; $html = <<$str
heredoc
#與heredoc 語法結構字符串相似,但是 nowdoc 不進行變量和轉義序列的解析操作。
$str = "nowdoc"; $html = <<<"END"字符串編碼END; echo $str; #$str
#####$str
#
在 PHP 字符串中,每個字符使用一個字節存儲(內存中),這意味著 PHP 只能支持 256 的字符集,因此不支持 Unicode。
PHP 中的 string 的實現方式是一個由字節組成的數組再加上一個整數指明緩沖區長度。并無如何將字節轉換成字符的信息,由程序員來決定。由于 PHP 并不特別指明字符串的編碼,那字符串到底是怎樣編碼的呢?答案是字符串會被按照該腳本文件相同的編碼方式來編碼。
一般情況下,雖然 PHP 內部不支持 Unicode 字符集,但是文件支持 UTF-8 編碼,絕大部分情況下不會有什么問題,但是遇到字符串編碼轉換的時候就有問題了,比如在一個 UTF-8 編碼的 PHP 文件中,程序輸出的字符數(6)并不等于實際的字符數(2):
echo strlen("中國"); # 6
mbstring 提供了針對多字節字符串的函數,能夠幫你處理 PHP 中的多字節編碼。 除此以外,mbstring 還能在可能的字符編碼之間相互進行編碼轉換。
因此,當需要操作 Unicode 字符集的字符串時候,請務必安裝 mbstring 擴展,并使用相應的函數代替原生的字符串函數:
echo mb_strlen("中國", "UTF-8"); # 2
mbstring 擴展大部分的函數都需要基于一個編碼(內部編碼)來處理,請務必統一使用 UTF-8 編碼,這個大部分可以在 PHP.INI 中配置。
對于 PHP 字符串編碼問題,強烈建議:
PHP 腳本文件使用 UTF-8 無 BOM 編碼格式;
字符串操作使用 mbstring 擴展函數;
數據庫的連接和存儲使用 UTF-8 編碼;
HTML 文檔使用 UTF-8 編碼。
字符串格式化rtrim() — 刪除字符串末端的空白字符(或者其他字符)
ltrim() — 刪除字符串開頭的空白字符(或其他字符)
trim() — 去除字符串首尾處的空白字符(或者其他字符)
$text = " These are a few words :) ... "; echo rtrim($text); # " These are a few words :) ..." echo ltrim($text); # "These are a few words :) ... " echo trim($text); # "These are a few words :) ..." $trimmed = trim($hello, "ld"); # "Hello Wor"
nl2br() — 在字符串所有新行之前插入 HTML 換行標記
printf() — 輸出格式化字符串
sprintf() — 把格式化的字符串寫入變量中
echo nl2br("hello world"); #hello #world printf("I need to pay $%.02lf", 1.3568); # I need to pay $1.36 $str = sprintf("I need to pay $%.02lf", 1.3568); echo $str; # I need to pay $1.36
htmlspecialchars() — 將特殊字符轉換為 HTML 實體
htmlentities() — 將字符轉換為 HTML 轉義字符
echo htmlspecialchars("Test", ENT_QUOTES); # Test echo htmlentities("A "quote" is bold"); # A "quote" is bold3. 格式化字符串以便存儲
stripslashes() — 反引用一個引用字符串
addslashes() — 使用反斜線引用字符串$str = "Is your name O"reilly?"; echo stripslashes($str); # Is your name O"reilly? echo addslashes($str); # Is your name O"reilly?4. 改變字符串的字母大小寫
strtolower() — 將字符串轉化為小寫
strtoupper() — 將字符串轉化為大寫
ucfirst() — 將字符串的首字母轉換為大寫
ucwords() — 將字符串中每個單詞的首字母轉換為大寫$str = "Mary Had A Little Lamb and She LOVED It So"; echo strtolower($str); # mary had a little lamb and she loved it so echo strtoupper($str); # MARY HAD A LITTLE LAMB AND SHE LOVED IT SO $foo = "hello world!"; $foo = ucfirst($foo); # Hello world! $foo = ucwords($foo); # Hello World!字符串連接和分割1. explode()
使用一個字符串分割另一個字符串:
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); print_r($pieces); # Array ( [0] => piece1 [1] => piece2 [2] => piece3 [3] => piece4 [4] => piece5 [5] => piece6 )2. implode() 或 join()
將一個一維數組的值拼接為字符串:
$array = array("lastname", "email", "phone"); echo implode(",", $array); # lastname,email,phone3. substr()
返回字符串的子串:
echo substr("abcdef", 1); # bcdef echo substr("abcdef", 1, 3); # bcd echo substr("abcdef", -1, 1); # f字符串比較1. strcmp()
二進制安全字符串比較(區分大小寫):
echo strcmp("jochen", "Jochen"); # 32,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果兩者相等,返回 0。2. strcasecmp()
二進制安全比較字符串(不區分大小寫):
echo strcasecmp("jochen", "Jochen"); # 03. strnatcmp()
使用自然排序算法比較字符串:
echo strnatcmp("img12.png", "img10.png"); # 1,字符串查找和替換1. strstr()
查找字符串的首次出現并返回字符串:
echo strstr("name@example.com", "@"); # @example.com2. strpos()
查找字符串首次出現的位置:
$hello = "Hello World"; if(strpos($hello, "H") !== false) { echo "Find"; } else { echo "No Find"; }3. str_replace()
匹配字符串并替換:
$search = "world"; $replace = "Shanghai"; $subject = "Hello world!"; echo str_replace($search, $replace, $subject); # Hello Shanghai4. substr_replace()
替換指定位置的字符串:
$replace = "Shanghai"; $subject = "Hello world!"; echo substr_replace($subject, $replace, 6); # Hello Shanghai正則表達式1. preg_match()
執行一個正則表達式匹配:
$email = "10001110@qq.com"; $pattern = "/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/"; if (preg_match($pattern, $email, $match)) { echo "匹配成功
"; } else { echo "匹配失敗
"; }2. preg_match_all()
執行一個全局正則表達式匹配:
$str = "Name: John Poul
Title: PHP Guru"; preg_match_all("/(.*)/U", $str, $result); print_r($result); # Array ( [0] => Array ( [0] => John Poul [1] => PHP Guru ) [1] => Array ( [0] => John Poul [1] => PHP Guru ) )3. preg_split()
通過一個正則表達式分隔字符串:
$keywords = preg_split("/[s,]+/", "hypertext language, programming"); print_r($keywords); # Array ( [0] => hypertext [1] => language [2] => programming )4. preg_replace()
執行一個正則表達式的搜索和替換:
$str = "foo o"; echo preg_replace("/ss+/", " ", $str); # "foo o" $count = 0; echo preg_replace(array("/d/", "/s/"), "*", "xp 4 to", -1 , $count); # xp***to echo $count; # 3
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28509.html
摘要:小駝峰法大駝峰法匈牙利命名法變量名屬性類型對象描述。是一種弱類型語言,變量在使用之前并不需要聲明類型,且同一變量可以保存多種不同類型的數據。另外,在函數內部創建的靜態變量是無法在函數外部使用的。 變量標識符 標識符即是變量的名稱,PHP 中關于變量的標識符有以下規則: 由任意字母、數字、下劃線組成,但不能以數字開頭 嚴格區分大小寫 為了科學規范標識符,主要有以下幾種流行的命名方式:...
摘要:個人也建議不要滿足于自己當下所知道的,多去拓展自己,多去學新的東西。作為一個面試者來說,知識點的記憶準備為的是更好的應對面試中技術面中問到的各種問題。 你好,是我琉憶——PHP程序員面試筆試系列圖書的作者。 隨著越來越多的人開始邁入PHP開發工程師的隊列,不管是一個PHP新手還是一個有一兩年開發經驗的PHPer都不得不去面對找工作前面試這件事。 我現在以個人對面試的經歷和見解來全面的對...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
閱讀 1252·2023-04-25 18:57
閱讀 2138·2023-04-25 16:28
閱讀 3937·2021-11-24 09:39
閱讀 3636·2021-11-16 11:45
閱讀 1824·2021-10-13 09:40
閱讀 1266·2019-08-30 15:52
閱讀 1721·2019-08-30 10:57
閱讀 663·2019-08-29 16:55