PHP強化之01 - 字符串 String

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

PHP強化系列--目錄

一、語法

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

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

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

2)雙引號
如果字符串是包圍在雙引號" "中馋没, PHP 將對一些特殊的字符進(jìn)行解析昔逗。
當(dāng) PHP 解析器遇到一個美元符號$時,它會和其它很多解析器一樣篷朵,去組合盡量多的標(biāo)識以形成一個合法的變量名勾怒∑排牛可以用花括號{}來明確變量名的界線。

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

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

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

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

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

注意:
--單引號比雙引號效率更高。
--當(dāng)雙引號里面包含單引號孝治,然后單引號里面包含變量列粪,這種情況變量也是會正常解析的,同時單引號會原樣輸出谈飒。

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

string 中的字符可以通過一個從 0 開始的下標(biāo),用類似 array 結(jié)構(gòu)中的方括號包含對應(yīng)的數(shù)字來訪問和修改杭措,比如$str[42]费什。也可用花括號訪問,比如 $str{42}手素≡е罚可以把 string 當(dāng)成字符組成的 array。函數(shù) substr()substr_replace()可用于操作多于一個字符的情況泉懦。

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

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

2)強制轉(zhuǎn)換
在PHP中酣栈,數(shù)據(jù)類型的轉(zhuǎn)換屬于強制轉(zhuǎn)換险胰,且共有三種轉(zhuǎn)換方式:
一個值可以通過在其前面加上(string)或用strval()函數(shù)來轉(zhuǎn)變成字符串。
在一個需要字符串的表達(dá)式中矿筝,會自動轉(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

注意: 一個漢字等于3個UTF_8字符

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

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 是個數(shù)組陋守,那么也將返回一個數(shù)組。
Tip: 在用于長文本隱藏時非常有用(如用...來替換后面的字符串)利赋。

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

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

該函數(shù)返回一個字符串或者數(shù)組水评。該字符串或數(shù)組是將 subject 中全部的 search 都被 replace 替換之后的結(jié)果。
如果沒有一些特殊的替換需求(比如正則表達(dá)式)媚送,你應(yīng)該使用該函數(shù)替換 ereg_replace()preg_replace()中燥。
類似的方法有:
preg_replace - 執(zhí)行一個正則表達(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 - 計算指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置
strripos - 計算指定字符串在目標(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)容合作請聯(lián)系作者
支付 ¥2.99 繼續(xù)閱讀
  • 序言:七十年代末疗涉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吟秩,更是在濱河造成了極大的恐慌咱扣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涵防,死亡現(xiàn)場離奇詭異闹伪,居然都是意外死亡,警方通過查閱死者的電腦和手機壮池,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門偏瓤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椰憋,你說我怎么就攤上這事硼补。” “怎么了熏矿?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵已骇,是天一觀的道長离钝。 經(jīng)常有香客問我,道長褪储,這世上最難降的妖魔是什么卵渴? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮鲤竹,結(jié)果婚禮上浪读,老公的妹妹穿的比我還像新娘。我一直安慰自己辛藻,他們只是感情好碘橘,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吱肌,像睡著了一般痘拆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮墨,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天纺蛆,我揣著相機與錄音,去河邊找鬼规揪。 笑死桥氏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猛铅。 我是一名探鬼主播字支,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奸忽!你這毒婦竟也來了堕伪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤月杉,失蹤者是張志新(化名)和其女友劉穎刃跛,沒想到半個月后抠艾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苛萎,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年检号,在試婚紗的時候發(fā)現(xiàn)自己被綠了腌歉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡齐苛,死狀恐怖翘盖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凹蜂,我是刑警寧澤馍驯,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布阁危,位于F島的核電站,受9級特大地震影響汰瘫,放射性物質(zhì)發(fā)生泄漏狂打。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一混弥、第九天 我趴在偏房一處隱蔽的房頂上張望趴乡。 院中可真熱鬧,春花似錦蝗拿、人聲如沸晾捏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惦辛。三九已至,卻和暖如春萤捆,著一層夾襖步出監(jiān)牢的瞬間裙品,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工俗或, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留市怎,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓辛慰,卻偏偏與公主長得像区匠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帅腌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容