您好,登錄后才能下訂單哦!
正則表達(dá)式是PHP中一個(gè)非常重要的知識(shí)點(diǎn),通常用來查找和替換字符串,驗(yàn)證用戶輸入的信息格式是否符合規(guī)范,如郵件格式、電話格式等等。還有采集器之類的軟件中,正則也是必用不可!主要介紹PHP中幾個(gè)常見的正則函數(shù):preg_match()、preg_match_all()、preg_grep()、preg_split()。
1.preg_match()
該函數(shù)通常用于表單驗(yàn)證??梢园粗付ǖ恼齽t表達(dá)式模式,對(duì)字符串進(jìn)行搜索和匹配一次.該函數(shù)有兩個(gè)必選參數(shù),第一個(gè)參數(shù)需要提供用戶按正則表達(dá)式語(yǔ)法編寫的模式,第二個(gè)參數(shù)需要一個(gè)字符串。如果提供了第三個(gè)可選的數(shù)組參數(shù)matches,則可以擁有保存第一個(gè)參數(shù)中的子模式的各個(gè)部分的匹配結(jié)果。
2.preg_match_all()
該函數(shù)與preg_match()函數(shù)類似,不同的是函數(shù)preg_match()在第一次匹配之后就會(huì)停止搜索。而函數(shù)preg_match_all()則會(huì)一直搜索到指定字符串的結(jié)尾,可以獲取到所有匹配到的結(jié)果。
該函數(shù)把所有可能的匹配結(jié)果放入第三個(gè)參數(shù)的數(shù)組中,并返回整個(gè)模式匹配的次數(shù),如果出錯(cuò)則返回False。如果使用了第四個(gè)參數(shù),會(huì)根據(jù)它指定的順序?qū)⒚看纬霈F(xiàn)的匹配結(jié)果保存到第三個(gè)參數(shù)的數(shù)組中。第四個(gè)參數(shù)有兩個(gè)預(yù)定義的值
a.PREG_PATTERN_ORDER: 它是preg_match_all() 函數(shù)的默認(rèn)值,對(duì)結(jié)果排序使$matches[0]為全部模式匹配的數(shù)組,$matches[1] 為第一個(gè)括號(hào)中的子模式所匹配的字符串組成的數(shù)組,以此類推。
b.PREG_SET_ORDER: 對(duì)結(jié)果排序是$matches[0]為第一組匹配項(xiàng)的數(shù)組,$matches[1]為第二組匹配項(xiàng)的數(shù)組,以此類推。
3.preg_grep()
該函數(shù)與前兩個(gè)函數(shù)不同的是匹配數(shù)組中的元素,返回與正則表達(dá)式匹配的數(shù)組單元。
該函數(shù)返回一個(gè)數(shù)組,其中包括了第二個(gè)參數(shù)數(shù)組中與給定的第一個(gè)參數(shù)模式相匹配的單元,對(duì)于輸出數(shù)組的每個(gè)元素,進(jìn)行依稀匹配。
4.preg_replace()
該函數(shù)可執(zhí)行正則表達(dá)式的搜索和替換,是一個(gè)最強(qiáng)大的字符串替換處理函數(shù)。
該函數(shù)的三個(gè)參數(shù),第一個(gè)參數(shù)匹配項(xiàng),二個(gè)參數(shù)被替換的參數(shù)。第三個(gè)被搜多的參數(shù)。 如果指定第四個(gè)可選參數(shù)limit ,則僅替換limit個(gè)匹配,如果生了limit 或者其值為-1,則所有的匹配項(xiàng)都會(huì)被替換。
5.str_replace()
該函數(shù)是PHP提高的字符串處理函數(shù),也可以實(shí)現(xiàn)字符串的替換工資。雖然沒有正則表達(dá)式的替換函數(shù)功能強(qiáng)大,但一些簡(jiǎn)單字符串的替換要比preg_replace()函數(shù)的執(zhí)行效率高。
該函數(shù)有單個(gè)必選參數(shù),還有一個(gè)可選參數(shù),第一個(gè)參數(shù)是目標(biāo)對(duì)象,第二個(gè)參數(shù)是替換對(duì)象,第三個(gè)是被處理的字符串,該函數(shù)在第三個(gè)參數(shù)的字符串中,以區(qū)分大小寫的方式搜索第一個(gè)參數(shù)提高的目標(biāo)對(duì)象,并用第二個(gè)參數(shù)所提供的替換對(duì)象替換找到的所有實(shí)例。如果沒有在第三個(gè)參數(shù)中搜索到目標(biāo)對(duì)象,則被處理的字符串保持不變。第四個(gè)是一個(gè)可選參數(shù),變量的引用,必須傳入一個(gè)變量名稱,用來保存替換的次數(shù)。
使用str_replace()的前兩個(gè)參數(shù)不僅可以使用字符串,也可以使數(shù)組。
6.preg_split()
該函數(shù)使用了Perl兼容的正則表達(dá)式語(yǔ)法,可以按正則表達(dá)式的方法分割字符串。
該函數(shù)返回一個(gè)字符串?dāng)?shù)組,數(shù)組中元素包含通過第二個(gè)參數(shù)中的字符串,經(jīng)第一個(gè)參數(shù)的正則表達(dá)式,作為匹配的邊界分割的子串。如果指定了第三個(gè)字符串limit,則最多返回linmit個(gè)子串。而其中最后一個(gè)元素包含了被分割后剩余的所有部分。如果limit是-1,則意味著沒有限制。 第四個(gè)參數(shù)是可選參數(shù),
>> PREG_SPLIT_NO_EMPTY:如果設(shè)定了本標(biāo)記,則preg_split()只返回非空的成分
>> PREG_SPLIT_DELIM_CAPTURE: 如果設(shè)定了本標(biāo)記,定界符模式中的括號(hào)表達(dá)式也會(huì)被捕獲并返回
>> PREG_SPLIT_OFFSET_CAPTURE: 如果設(shè)定了本標(biāo)記,對(duì)每個(gè)出現(xiàn)的匹配結(jié)果也同時(shí)返回其附屬的字符串偏移量。注意這改變了返回的數(shù)組的值,使其中的每個(gè)單元也是一個(gè)數(shù)組,其中第一項(xiàng)為匹配字符串,第二項(xiàng)為其在原字符串中的偏移量。
函數(shù)explode()
如果僅用某個(gè)特定的字符串進(jìn)行分割,建議使用explode()函數(shù),它不用去調(diào)用正則表達(dá)式引擎,因此速度是最快的。
該函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)提高一個(gè)分割字符或是字符串,第二個(gè)參數(shù)是被分割的字符串,如果提供第三個(gè)可選參數(shù)limit,則指定最多將字符串分割為多少個(gè)子串。該函數(shù)返回一個(gè)由被分割的子字符串組成的數(shù)組。
函數(shù) implode()
與分割字符串相對(duì)應(yīng)的是implode()函數(shù),把數(shù)組中所有元素組合為一個(gè)字符串。函數(shù)join()為該函數(shù)的別名。
該函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)提高一個(gè)鏈接字符或字符串,第二個(gè)參數(shù)指定一個(gè)被鏈接的數(shù)組。
附:什么是正則表達(dá)式?
標(biāo)簽:PHP編程
來源:PHP正則表達(dá)式的運(yùn)用
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。