首頁 後端開發 php教程 深入了解php正規表示式

深入了解php正規表示式

Jun 06, 2018 am 09:57 AM
php正規則 正規表示式

本篇文章主要介紹深入了解php正規表示式,有興趣的朋友參考下,希望對大家有幫助。

php正規表示式分享:

#1.建立正規表示式

$regex = '/\d/i';
與JavaScript中的第一個方式有點像,但這裡的話是個字串。

 2.正規表示式中的特殊字元

#特殊字元有:   . \ * ? [ ^ ] $ ( ) { } = ! < > | : -

#3.正規表示式中的函數

有8個方法,preg_match與preg_match_all,preg_replace與preg_replace_callback,preg_grep、preg_split、preg_last_error和preg_quote。  

preg_match:

#執行一個正規表示式符合

 

#傳回pattern 的符合次數。它的值將是0次(不匹配)或1次,因為preg_match()在第一次匹配後,將會停止搜尋

$subject = "dd133aa2";
$pattern = &#39;/\d+/&#39;;
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
登入後複製

上面的範例程式碼加了參數“PREG_OFFSET_CAPTURE”,這樣的話,在$matches中會多一個偏移數。例如下面的“2”

 

preg_match_all:

執行一個「全域」正規表示式匹配

 

返回完整符合次數(可能是0),或如果發生錯誤返回FALSE。

下面的程式碼中$subject和$pattern跟上面的都一樣,唯一不同的是preg_match換成了preg_match_all。

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
登入後複製

回傳的次數是2,配對到了兩次,再看看陣列$matches中的輸入,有兩個。比上面的多了一個。

 

 preg_replace:

執行一個正規表示式的搜尋與取代

#如果subject是一個數組, preg_replace()傳回一個數組, 其他情況下回傳一個字串。

如果匹配被查找到,替換後的subject被返回,其他情況下 返回沒有改變的 subject。如果發生錯誤,則傳回 NULL。

在程式碼中$subject是一個數組,裡面有兩組字串,接下來是將多個數字替換為大寫的「Z」。


$subject = array("dd133aa2", "kk1ff3");
$pattern = &#39;/\d+/&#39;;
$result = preg_replace($pattern, &#39;Z&#39;, $subject);
print_r($result);
登入後複製

#preg_replace_callback:

執行一個正規表示式搜尋並且使用一個「回呼」進行替換

#這個函數的行為除了可以指定一個callback替代replacement進行替換字符串的計算,其他方面等同於preg_replace(),包括傳回的結果。

下面的程式碼也是替換成大寫的“Z”,回呼函數中每次$matches中的內容就是程式碼中註解的部分,第一次是133,第二次是2。

$subject = "dd133aa2";
$pattern = &#39;/\d+/&#39;;
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return &#39;Z&#39;;
   }, $subject);
print_r($result);
登入後複製

preg_grep:

傳回符合模式的陣列項目

#傳回使用input中key做索引的陣列

下面的範例程式碼中,在$subject數組中我加了個“ddsdfd”,裡面沒有包含數字,在做匹配的時候,就把這個沒數字的給過濾掉了。

而$result2印出來的剛好相反,是把過濾的印出來了,但是key還是為2,並不是0。

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = &#39;/\d+/&#39;;
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);
登入後複製


#preg_split:

透過一個正規表示式分隔字串

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = &#39;/(\d+)/&#39;;
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);
登入後複製


preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);
登入後複製

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);
登入後複製

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

以上是深入了解php正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP正規表示式驗證:數位格式偵測 PHP正規表示式驗證:數位格式偵測 Mar 21, 2024 am 09:45 AM

PHP正規表示式驗證:數位格式偵測在編寫PHP程式時,經常需要對使用者輸入的資料進行驗證,其中一個常見的驗證是檢查資料是否符合指定的數字格式。在PHP中,可以使用正規表示式來實現這種驗證。本文將介紹如何使用PHP正規表示式來驗證數字格式,並提供具體的程式碼範例。首先,讓我們來看看常見的數字格式驗證要求:整數:只包含數字0-9,可以以正負號開頭,不包含小數點。浮點

如何使用正規表示式在 Golang 中驗證電子郵件地址? 如何使用正規表示式在 Golang 中驗證電子郵件地址? May 31, 2024 pm 01:04 PM

若要使用正規表示式在Golang中驗證電子郵件地址,請執行下列步驟:使用regexp.MustCompile建立正規表示式模式,以符合有效的電子郵件地址格式。使用MatchString函數檢查字串是否與模式相符。此模式涵蓋了大多數有效的電子郵件地址格式,包括:局部使用者名稱可以包含字母、數字和特殊字元:!.#$%&'*+/=?^_{|}~-`網域至少包含一個字母,後面可以跟字母、數字或連字符頂級域名(TLD)不能超過63個字符長

如何在 Go 中使用正規表示式匹配時間戳記? 如何在 Go 中使用正規表示式匹配時間戳記? Jun 02, 2024 am 09:00 AM

在Go中,可以使用正規表示式比對時間戳記:編譯正規表示式字串,例如用於匹配ISO8601時間戳記的表達式:^\d{4}-\d{2}-\d{2}T \d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ 。使用regexp.MatchString函數檢查字串是否與正規表示式相符。

掌握Go語言的正規表示式和字串處理 掌握Go語言的正規表示式和字串處理 Nov 30, 2023 am 09:54 AM

Go語言作為一門現代化的程式語言,提供了強大的正規表示式和字串處理功能,使得開發者能夠更有效率地處理字串資料。掌握Go語言的正規表示式和字串處理,對於開發者來說是非常重要的。本文將詳細介紹Go語言中正規表示式的基本概念和用法,以及如何使用Go語言處理字串。一、正規表示式正規表示式是用來描述字串模式的工具,能夠方便地實現字串的匹配、尋找和替換等操

PHP正規表示式:精確匹配與排除模糊包含 PHP正規表示式:精確匹配與排除模糊包含 Feb 28, 2024 pm 01:03 PM

PHP正規表示式:精確匹配與排除模糊包含正規表示式是一種強大的文字匹配工具,能夠幫助程式設計師在處理文字時進行高效的搜尋、替換和篩選。在PHP中,正規表示式也被廣泛應用於字串處理和資料匹配。本文將重點介紹在PHP中如何進行精確配對和排除模糊包含的操作,同時結合具體的程式碼範例進行說明。精確匹配精確匹配意味著只匹配符合完全條件的字串,不匹配任何變種或包含額外字

如何在 Go 中使用正規表示式驗證密碼? 如何在 Go 中使用正規表示式驗證密碼? Jun 02, 2024 pm 07:31 PM

Go中使用正規表示式驗證密碼的方法如下:定義正規表示式模式,符合最低密碼要求:至少8個字符,包含小寫字母、大寫字母、數字和特殊字符。使用regexp套件中的MustCompile函式編譯正規表示式模式。使用MatchString方法測試輸入字串是否與正規表示式模式相符。

中文字元過濾:PHP正規表示式實踐 中文字元過濾:PHP正規表示式實踐 Mar 24, 2024 pm 04:48 PM

PHP是一種廣泛應用的程式語言,特別在Web開發領域中非常流行。在網路開發過程中,經常會遇到需要對使用者輸入的文字進行過濾、驗證等操作,其中字元過濾是一項十分重要的操作。本文將介紹如何使用PHP中的正規表示式來實現中文字元過濾的功能,並給出具體的程式碼範例。首先,我們要先明確一下中文字元的Unicode範圍是從u4e00到u9fa5,也就是所有的漢字都處於這個範圍

正規表示式通配符有哪些 正規表示式通配符有哪些 Nov 17, 2023 pm 01:40 PM

正規表示式通配符有"."、"*"、"+"、"?"、"^"、"$"、"[]"、"[^]"、"[a-z]"、"[A-Z] "、"[0-9]"、"\d"、"\D"、"\w"、"\W"、"\s&quo

See all articles