PHP強(qiáng)化之01 - 字符串 String

----- 最后更新【2021-10-12】-----

PHP強(qiáng)化系列--目錄

一、語法

1、字符串的4種聲明方式:

在php語法當(dāng)中,一個(gè)字符串可以用 4 種方式表達(dá),它們分別是:單引號(hào)、雙引號(hào)、heredoc語法結(jié)構(gòu)nowdoc語法結(jié)構(gòu)。

1)單引號(hào)
要表達(dá)一個(gè)單引號(hào)自身,需在它的前面加個(gè)反斜線\來轉(zhuǎn)義,即\'。要表達(dá)一個(gè)反斜線自身,則用兩個(gè)反斜線\\。其它任何方式的反斜線都會(huì)被當(dāng)成反斜線本身,即在單引號(hào)字符串中的變量和特殊字符的轉(zhuǎn)義序列將不會(huì)被替換(例如\r或者\n也是不會(huì)被轉(zhuǎn)義,也是原樣輸出)。

2)雙引號(hào)
如果字符串是包圍在雙引號(hào)" "中, PHP 將對(duì)一些特殊的字符進(jìn)行解析。
當(dāng) PHP 解析器遇到一個(gè)美元符號(hào)$時(shí),它會(huì)和其它很多解析器一樣,去組合盡量多的標(biāo)識(shí)以形成一個(gè)合法的變量名??梢杂没ɡㄌ?hào){}來明確變量名的界線。

3)heredoc 語法結(jié)構(gòu)
第三種表達(dá)字符串的方法是用 heredoc 語法結(jié)構(gòu):<<<。在該運(yùn)算符之后要提供一個(gè)標(biāo)識(shí)符,然后換行。接下來是字符串string本身,最后要用前面定義的標(biāo)識(shí)符作為結(jié)束標(biāo)志。

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

Warning: 要注意的是結(jié)束標(biāo)識(shí)符這行除了可能有一個(gè)分號(hào);外,絕對(duì)不能包含其它字符。這意味著標(biāo)識(shí)符不能縮進(jìn),分號(hào)的前后也不能有任何空白或制表符。

4)nowdoc 語法結(jié)構(gòu)
就象 heredoc 結(jié)構(gòu)類似于雙引號(hào)字符串,Nowdoc 結(jié)構(gòu)是類似于單引號(hào)字符串的。Nowdoc 結(jié)構(gòu)很像 heredoc 結(jié)構(gòu),但是 nowdoc 中不進(jìn)行解析操作。這種結(jié)構(gòu)很適合用于嵌入 PHP 代碼或其它大段文本而無需對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義。
一個(gè) nowdoc 結(jié)構(gòu)也用和 heredocs 結(jié)構(gòu)一樣的標(biāo)記<<<, 但是跟在后面的標(biāo)識(shí)符要用單引號(hào)括起來,即<<<'EOT'。Heredoc 結(jié)構(gòu)的所有規(guī)則也同樣適用于 nowdoc結(jié)構(gòu),尤其是結(jié)束標(biāo)識(shí)符的規(guī)則。

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

注意:
--單引號(hào)比雙引號(hào)效率更高。
--當(dāng)雙引號(hào)里面包含單引號(hào),然后單引號(hào)里面包含變量,這種情況變量也是會(huì)正常解析的,同時(shí)單引號(hào)會(huì)原樣輸出。

2、存取和修改字符串中的字符:

string 中的字符可以通過一個(gè)從 0 開始的下標(biāo),用類似 array 結(jié)構(gòu)中的方括號(hào)包含對(duì)應(yīng)的數(shù)字來訪問和修改,比如$str[42]。也可用花括號(hào)訪問,比如 $str{42}??梢园?string 當(dāng)成字符組成的 array。函數(shù) substr()substr_replace()可用于操作多于一個(gè)字符的情況。

3、轉(zhuǎn)換成字符串

1)自動(dòng)轉(zhuǎn)換
在一個(gè)需要字符串的表達(dá)式中,會(huì)自動(dòng)轉(zhuǎn)換為 string。比如在使用函數(shù) echo 或 print 時(shí),或在一個(gè)變量和一個(gè) string 進(jìn)行比較時(shí),就會(huì)發(fā)生這種轉(zhuǎn)換。

2)強(qiáng)制轉(zhuǎn)換
在PHP中,數(shù)據(jù)類型的轉(zhuǎn)換屬于強(qiáng)制轉(zhuǎn)換,且共有三種轉(zhuǎn)換方式:
一個(gè)值可以通過在其前面加上(string)或用strval()函數(shù)來轉(zhuǎn)變成字符串。
在一個(gè)需要字符串的表達(dá)式中,會(huì)自動(dòng)轉(zhuǎn)換為 string。也可參考函數(shù)settype(),如settype($var, "string");。

二、常用函數(shù)

1、子字符串操作

1)substr—返回字符串的子串

string substr( string $string, int $start [, int $length ] )

返回字符串 string 由 start 和 length 參數(shù)指定的子字符串。

substr("abcdef", -3, 1); // 返回 "d"
substr('abcdef', 1, 3);  // bcd

注意: 一個(gè)漢字等于3個(gè)UTF_8字符

$a = '第二部分';
substr($a, 0, 3);  // 返回 "第"
substr($a, 0, 4);  // 返回 "第?",后面會(huì)多一個(gè)亂碼

2)substr_replace—替換字符串的子串

mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )

substr_replace()在字符串 string 的副本中將由 start 和可選的 length 參數(shù)限定的子字符串使用 replacement 進(jìn)行替換。返回結(jié)果字符串。如果 string 是個(gè)數(shù)組,那么也將返回一個(gè)數(shù)組。
Tip: 在用于長(zhǎng)文本隱藏時(shí)非常有用(如用...來替換后面的字符串)。

3)str_replace—子字符串替換(搜索替換)

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

該函數(shù)返回一個(gè)字符串或者數(shù)組。該字符串或數(shù)組是將 subject 中全部的 search 都被 replace 替換之后的結(jié)果。
如果沒有一些特殊的替換需求(比如正則表達(dá)式),你應(yīng)該使用該函數(shù)替換 ereg_replace()preg_replace()。
類似的方法有:
preg_replace - 執(zhí)行一個(gè)正則表達(dá)式的搜索和替換

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

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

返回 needle 在 haystack 中首次出現(xiàn)的數(shù)字位置。

$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a'); //$pos =  0
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0

與該方法類似的還有:
stripos - 查找字符串首次出現(xiàn)的位置(不區(qū)分大小寫)
strrpos - 計(jì)算指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置
strripos - 計(jì)算指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置(不區(qū)分大小寫)

5)strstr—查找字符串的首次出現(xiàn);別名也叫strchr

string strstr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] )
還有 69% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容