PHP正則表達(dá)式的運用

正則表達(dá)式是php中一個非常重要的知識點绽快,通常用來查找和替換字符串芥丧,驗證用戶輸入的信息格式是否符合規(guī)范,如郵件格式坊罢、電話格式等等续担。還有采集器之類的軟件中,正則也是必用不可活孩!主要介紹PHP中幾個常見的正則函數(shù):preg_match()物遇、preg_match_all()、preg_grep()憾儒、preg_split()询兴。

1.preg_match()

該函數(shù)通常用于表單驗證∑鹬海可以按指定的正則表達(dá)式模式诗舰,對字符串進(jìn)行搜索和匹配一次.該函數(shù)有兩個必選參數(shù),第一個參數(shù)需要提供用戶按正則表達(dá)式語法編寫的模式训裆,第二個參數(shù)需要一個字符串眶根。如果提供了第三個可選的數(shù)組參數(shù)matches,則可以擁有保存第一個參數(shù)中的子模式的各個部分的匹配結(jié)果。

2.preg_match_all()

該函數(shù)與preg_match()函數(shù)類似边琉,不同的是函數(shù)preg_match()在第一次匹配之后就會停止搜索汛闸。而函數(shù)preg_match_all()則會一直搜索到指定字符串的結(jié)尾,可以獲取到所有匹配到的結(jié)果艺骂。

該函數(shù)把所有可能的匹配結(jié)果放入第三個參數(shù)的數(shù)組中诸老,并返回整個模式匹配的次數(shù),如果出錯則返回False钳恕。如果使用了第四個參數(shù)别伏,會根據(jù)它指定的順序?qū)⒚看纬霈F(xiàn)的匹配結(jié)果保存到第三個參數(shù)的數(shù)組中。第四個參數(shù)有兩個預(yù)定義的值

a.PREG_PATTERN_ORDER: 它是preg_match_all() 函數(shù)的默認(rèn)值忧额,對結(jié)果排序使$matches[0]為全部模式匹配的數(shù)組厘肮,$matches[1] 為第一個括號中的子模式所匹配的字符串組成的數(shù)組,以此類推睦番。

b.PREG_SET_ORDER: 對結(jié)果排序是$matches[0]為第一組匹配項的數(shù)組类茂,$matches[1]為第二組匹配項的數(shù)組,以此類推托嚣。

3.preg_grep()

該函數(shù)與前兩個函數(shù)不同的是匹配數(shù)組中的元素巩检,返回與正則表達(dá)式匹配的數(shù)組單元。

該函數(shù)返回一個數(shù)組示启,其中包括了第二個參數(shù)數(shù)組中與給定的第一個參數(shù)模式相匹配的單元兢哭,對于輸出數(shù)組的每個元素,進(jìn)行依稀匹配夫嗓。

4.preg_replace()

該函數(shù)可執(zhí)行正則表達(dá)式的搜索和替換迟螺,是一個最強大的字符串替換處理函數(shù)冲秽。

該函數(shù)的三個參數(shù),第一個參數(shù)匹配項矩父,二個參數(shù)被替換的參數(shù)锉桑。第三個被搜多的參數(shù)。 如果指定第四個可選參數(shù)limit 窍株,則僅替換limit個匹配民轴,如果生了limit 或者其值為-1,則所有的匹配項都會被替換夹姥。

5.str_replace()

該函數(shù)是PHP提高的字符串處理函數(shù)杉武,也可以實現(xiàn)字符串的替換工資辙诞。雖然沒有正則表達(dá)式的替換函數(shù)功能強大辙售,但一些簡單字符串的替換要比preg_replace()函數(shù)的執(zhí)行效率高。

該函數(shù)有單個必選參數(shù)飞涂,還有一個可選參數(shù)旦部,第一個參數(shù)是目標(biāo)對象,第二個參數(shù)是替換對象较店,第三個是被處理的字符串士八,該函數(shù)在第三個參數(shù)的字符串中,以區(qū)分大小寫的方式搜索第一個參數(shù)提高的目標(biāo)對象梁呈,并用第二個參數(shù)所提供的替換對象替換找到的所有實例婚度。如果沒有在第三個參數(shù)中搜索到目標(biāo)對象,則被處理的字符串保持不變官卡。第四個是一個可選參數(shù)蝗茁,變量的引用,必須傳入一個變量名稱寻咒,用來保存替換的次數(shù)哮翘。

使用str_replace()的前兩個參數(shù)不僅可以使用字符串,也可以使數(shù)組毛秘。

6.preg_split()

該函數(shù)使用了Perl兼容的正則表達(dá)式語法饭寺,可以按正則表達(dá)式的方法分割字符串。

該函數(shù)返回一個字符串?dāng)?shù)組叫挟,數(shù)組中元素包含通過第二個參數(shù)中的字符串艰匙,經(jīng)第一個參數(shù)的正則表達(dá)式,作為匹配的邊界分割的子串抹恳。如果指定了第三個字符串limit旬薯,則最多返回linmit個子串。而其中最后一個元素包含了被分割后剩余的所有部分适秩。如果limit是-1绊序,則意味著沒有限制硕舆。 第四個參數(shù)是可選參數(shù),

>> PREG_SPLIT_NO_EMPTY:如果設(shè)定了本標(biāo)記骤公,則preg_split()只返回非空的成分

>> PREG_SPLIT_DELIM_CAPTURE: 如果設(shè)定了本標(biāo)記抚官,定界符模式中的括號表達(dá)式也會被捕獲并返回

>> PREG_SPLIT_OFFSET_CAPTURE: 如果設(shè)定了本標(biāo)記,對每個出現(xiàn)的匹配結(jié)果也同時返回其附屬的字符串偏移量阶捆。注意這改變了返回的數(shù)組的值凌节,使其中的每個單元也是一個數(shù)組,其中第一項為匹配字符串洒试,第二項為其在原字符串中的偏移量倍奢。

函數(shù)explode()

如果僅用某個特定的字符串進(jìn)行分割,建議使用explode()函數(shù)垒棋,它不用去調(diào)用正則表達(dá)式引擎卒煞,因此速度是最快的。

該函數(shù)有三個參數(shù)叼架,第一個參數(shù)提高一個分割字符或是字符串畔裕,第二個參數(shù)是被分割的字符串,如果提供第三個可選參數(shù)limit乖订,則指定最多將字符串分割為多少個子串扮饶。該函數(shù)返回一個由被分割的子字符串組成的數(shù)組。

函數(shù) implode()

與分割字符串相對應(yīng)的是implode()函數(shù)乍构,把數(shù)組中所有元素組合為一個字符串甜无。函數(shù)join()為該函數(shù)的別名。

該函數(shù)有兩個參數(shù)哥遮,第一個參數(shù)提高一個鏈接字符或字符串岂丘,第二個參數(shù)指定一個被鏈接的數(shù)組。

附:什么是正則表達(dá)式昔善?

標(biāo)簽:PHP編程

來源:PHP正則表達(dá)式的運用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末元潘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子君仆,更是在濱河造成了極大的恐慌翩概,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件返咱,死亡現(xiàn)場離奇詭異钥庇,居然都是意外死亡,警方通過查閱死者的電腦和手機咖摹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門评姨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事吐句⌒埠螅” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵嗦枢,是天一觀的道長攀芯。 經(jīng)常有香客問我,道長文虏,這世上最難降的妖魔是什么侣诺? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮氧秘,結(jié)果婚禮上年鸳,老公的妹妹穿的比我還像新娘。我一直安慰自己丸相,他們只是感情好搔确,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著已添,像睡著了一般妥箕。 火紅的嫁衣襯著肌膚如雪滥酥。 梳的紋絲不亂的頭發(fā)上更舞,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音坎吻,去河邊找鬼缆蝉。 笑死,一個胖子當(dāng)著我的面吹牛瘦真,可吹牛的內(nèi)容都是我干的刊头。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼诸尽,長吁一口氣:“原來是場噩夢啊……” “哼原杂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起您机,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤穿肄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后际看,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咸产,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年仲闽,在試婚紗的時候發(fā)現(xiàn)自己被綠了脑溢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赖欣,死狀恐怖屑彻,靈堂內(nèi)的尸體忽然破棺而出验庙,到底是詐尸還是另有隱情,我是刑警寧澤社牲,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布壶谒,位于F島的核電站,受9級特大地震影響膳沽,放射性物質(zhì)發(fā)生泄漏汗菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一挑社、第九天 我趴在偏房一處隱蔽的房頂上張望陨界。 院中可真熱鬧,春花似錦痛阻、人聲如沸菌瘪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俏扩。三九已至,卻和暖如春弊添,著一層夾襖步出監(jiān)牢的瞬間录淡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工油坝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嫉戚,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓澈圈,卻偏偏與公主長得像彬檀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞬女,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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