成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 學(xué)習(xí)總結(jié)之字符串

WelliJhon / 864人閱讀

摘要:因此,當(dāng)需要操作字符集的字符串時(shí)候,請(qǐng)務(wù)必安裝擴(kuò)展,并使用相應(yīng)的函數(shù)代替原生的字符串函數(shù)中國(guó)擴(kuò)展大部分的函數(shù)都需要基于一個(gè)編碼內(nèi)部編碼來(lái)處理,請(qǐng)務(wù)必統(tǒng)一使用編碼,這個(gè)大部分可以在中配置。

創(chuàng)建

PHP 支持 4 種方式來(lái)創(chuàng)建一個(gè)字符串:?jiǎn)我?hào)、雙引號(hào)、heredoc 語(yǔ)法結(jié)構(gòu)和 nowdoc 語(yǔ)法結(jié)構(gòu)。

1. 單引號(hào)

在單引號(hào)字符串中,變量和特殊字符將不會(huì)被轉(zhuǎn)義替換,除了反斜杠和單引號(hào)本身:

echo "Arnold once said: "I"ll be back""; # Arnold once said: "I"ll be back"

echo "You deleted C:*.*?"; # You deleted C:*.*?
2. 雙引號(hào)

能夠識(shí)別字符串中的變量和轉(zhuǎn)義序列:

$juice = "apple";
echo "$juice juice."; # apple juice.

echo "Hello 
World!";
#Hello
#World!
3. heredoc 語(yǔ)法結(jié)構(gòu)

與雙引號(hào)字符串相似。結(jié)束標(biāo)記必須頂頭寫,不能有縮進(jìn)和空格,且在結(jié)束標(biāo)記末尾要有分號(hào);標(biāo)記之間的變量可以被正常解析,但是函數(shù)則不可以。常用在輸出包含大量 HTML 文檔的時(shí)候。

$str = "heredoc";
$html = <<
    

$str

END; echo $html; #
#
#
#

heredoc

#
#
#
4. nowdoc 語(yǔ)法結(jié)構(gòu)

heredoc 語(yǔ)法結(jié)構(gòu)字符串相似,但是 nowdoc 不進(jìn)行變量和轉(zhuǎn)義序列的解析操作。

$str = "nowdoc";
$html = <<<"END"

$str

END; echo $str; #
#
#
#

$str

#
#
#
字符串編碼

在 PHP 字符串中,每個(gè)字符使用一個(gè)字節(jié)存儲(chǔ)(內(nèi)存中),這意味著 PHP 只能支持 256 的字符集,因此不支持 Unicode。

PHP 中的 string 的實(shí)現(xiàn)方式是一個(gè)由字節(jié)組成的數(shù)組再加上一個(gè)整數(shù)指明緩沖區(qū)長(zhǎng)度。并無(wú)如何將字節(jié)轉(zhuǎn)換成字符的信息,由程序員來(lái)決定。由于 PHP 并不特別指明字符串的編碼,那字符串到底是怎樣編碼的呢?答案是字符串會(huì)被按照該腳本文件相同的編碼方式來(lái)編碼。

一般情況下,雖然 PHP 內(nèi)部不支持 Unicode 字符集,但是文件支持 UTF-8 編碼,絕大部分情況下不會(huì)有什么問題,但是遇到字符串編碼轉(zhuǎn)換的時(shí)候就有問題了,比如在一個(gè) UTF-8 編碼的 PHP 文件中,程序輸出的字符數(shù)(6)并不等于實(shí)際的字符數(shù)(2):

echo strlen("中國(guó)"); # 6
mbstring 提供了針對(duì)多字節(jié)字符串的函數(shù),能夠幫你處理 PHP 中的多字節(jié)編碼。 除此以外,mbstring 還能在可能的字符編碼之間相互進(jìn)行編碼轉(zhuǎn)換。

因此,當(dāng)需要操作 Unicode 字符集的字符串時(shí)候,請(qǐng)務(wù)必安裝 mbstring 擴(kuò)展,并使用相應(yīng)的函數(shù)代替原生的字符串函數(shù):

echo mb_strlen("中國(guó)", "UTF-8"); # 2
mbstring 擴(kuò)展大部分的函數(shù)都需要基于一個(gè)編碼(內(nèi)部編碼)來(lái)處理,請(qǐng)務(wù)必統(tǒng)一使用 UTF-8 編碼,這個(gè)大部分可以在 PHP.INI 中配置。

對(duì)于 PHP 字符串編碼問題,強(qiáng)烈建議:

PHP 腳本文件使用 UTF-8 無(wú) BOM 編碼格式;

字符串操作使用 mbstring 擴(kuò)展函數(shù);

數(shù)據(jù)庫(kù)的連接和存儲(chǔ)使用 UTF-8 編碼;

HTML 文檔使用 UTF-8 編碼。

字符串格式化
1. 字符串去除

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"
2. 格式化字符串以便輸出

nl2br() — 在字符串所有新行之前插入 HTML 換行標(biāo)記
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() — 將特殊字符轉(zhuǎn)換為 HTML 實(shí)體
htmlentities() — 將字符轉(zhuǎn)換為 HTML 轉(zhuǎn)義字符

echo htmlspecialchars("Test", ENT_QUOTES); # Test

echo htmlentities("A "quote" is bold"); # A "quote" is bold
3. 格式化字符串以便存儲(chǔ)

stripslashes() — 反引用一個(gè)引用字符串
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() — 將字符串轉(zhuǎn)化為小寫
strtoupper() — 將字符串轉(zhuǎn)化為大寫
ucfirst() — 將字符串的首字母轉(zhuǎn)換為大寫
ucwords() — 將字符串中每個(gè)單詞的首字母轉(zhuǎn)換為大寫

$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()

使用一個(gè)字符串分割另一個(gè)字符串:

$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()

將一個(gè)一維數(shù)組的值拼接為字符串:

$array = array("lastname", "email", "phone");
echo implode(",", $array); # lastname,email,phone
3. substr()

返回字符串的子串:

echo substr("abcdef", 1);     # bcdef
echo substr("abcdef", 1, 3);  # bcd
echo substr("abcdef", -1, 1); # f
字符串比較
1. strcmp()

二進(jìn)制安全字符串比較(區(qū)分大小寫):

echo strcmp("jochen", "Jochen"); # 32,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果兩者相等,返回 0。
2. strcasecmp()

二進(jìn)制安全比較字符串(不區(qū)分大小寫):

echo strcasecmp("jochen", "Jochen"); # 0
3. strnatcmp()

使用自然排序算法比較字符串:

echo strnatcmp("img12.png", "img10.png"); # 1,
字符串查找和替換
1. strstr()

查找字符串的首次出現(xiàn)并返回字符串:

echo strstr("[email protected]", "@"); # @example.com
2. strpos()

查找字符串首次出現(xiàn)的位置:

$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 Shanghai
4. substr_replace()

替換指定位置的字符串:

$replace = "Shanghai";
$subject = "Hello world!";
echo substr_replace($subject, $replace, 6); # Hello Shanghai
正則表達(dá)式
1. preg_match()

執(zhí)行一個(gè)正則表達(dá)式匹配:

$email = "[email protected]";
$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()

執(zhí)行一個(gè)全局正則表達(dá)式匹配:

$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()

通過(guò)一個(gè)正則表達(dá)式分隔字符串:

$keywords = preg_split("/[s,]+/", "hypertext language, programming");
print_r($keywords);
# Array ( [0] => hypertext [1] => language [2] => programming )
4. preg_replace()

執(zhí)行一個(gè)正則表達(dá)式的搜索和替換:

$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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28509.html

相關(guān)文章

  • PHP 學(xué)習(xí)總結(jié)變量

    摘要:小駝峰法大駝峰法匈牙利命名法變量名屬性類型對(duì)象描述。是一種弱類型語(yǔ)言,變量在使用之前并不需要聲明類型,且同一變量可以保存多種不同類型的數(shù)據(jù)。另外,在函數(shù)內(nèi)部創(chuàng)建的靜態(tài)變量是無(wú)法在函數(shù)外部使用的。 變量標(biāo)識(shí)符 標(biāo)識(shí)符即是變量的名稱,PHP 中關(guān)于變量的標(biāo)識(shí)符有以下規(guī)則: 由任意字母、數(shù)字、下劃線組成,但不能以數(shù)字開頭 嚴(yán)格區(qū)分大小寫 為了科學(xué)規(guī)范標(biāo)識(shí)符,主要有以下幾種流行的命名方式:...

    bitkylin 評(píng)論0 收藏0
  • 個(gè)人建議PHP面試的準(zhǔn)備

    摘要:個(gè)人也建議不要滿足于自己當(dāng)下所知道的,多去拓展自己,多去學(xué)新的東西。作為一個(gè)面試者來(lái)說(shuō),知識(shí)點(diǎn)的記憶準(zhǔn)備為的是更好的應(yīng)對(duì)面試中技術(shù)面中問到的各種問題。 你好,是我琉憶——PHP程序員面試筆試系列圖書的作者。 隨著越來(lái)越多的人開始邁入PHP開發(fā)工程師的隊(duì)列,不管是一個(gè)PHP新手還是一個(gè)有一兩年開發(fā)經(jīng)驗(yàn)的PHPer都不得不去面對(duì)找工作前面試這件事。 我現(xiàn)在以個(gè)人對(duì)面試的經(jīng)歷和見解來(lái)全面的對(duì)...

    macg0406 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<