搜尋
首頁後端開發php教程讓人心動的PHP的正規表示式基礎(圖例詳解)

在之前的文章中為大家帶來了《學會使用PHP的List、each函數及配合》,主要講解了應該如何使用list函數和each函數以及兩者之間應該怎樣配合使用,相信大家已經掌握的差不多了,那麼本篇文章我們一起來看看PHP中的正規表示式。希望對大家有幫助!

讓人心動的PHP的正規表示式基礎(圖例詳解)

正規表示式是一種邏輯公式,是用一開始宣告好的一些字元還有這些字元的組合,組成的一個“規定字串”,這個規定字串其實就是用來過濾字串的,可以理解為我們在登陸用戶的時候有時會要填寫驗證碼或者電話之類的這些特定的數據,這時候就要用到正則表達式。

正規表示式雖然看起來複雜,其實並不難,那接下來我們一起來看看吧。

正規表示式的定界符

#首先我們要學習的就是正規表示式的定界符,顧名思義,定界符就是確定正規表示式邊界的符號,定一個邊界,邊界以內就是正規表示式。同時正規表示式的定界符有規定:

  • 定界符,不能使用a-zA-Z0-9\ 除此之外都可以使用。並且必須成對出現,有開始就有結束。

範例如下:

$正则表达式$
%正则表达式%
/正则表达式/

其中我們需要注意的是/是轉義字符,當我們正則中需要匹配/的時候,可以使用\轉義一下。如果覺得麻煩的話,可以直接使用其他的定界符例如:

$/$

正規表示式的原子

正規表示式的原子是正規表示式裡的最小單位,也就是我們需要配對的內容,在我們成立的整形額表達式中,最少也要有一個原子。

其實可以理解為,所有可見的不可見的字元都是原子,像是空格、回車、換行、0-9、標點符號、A-Za-z、中文這些都是原子。

preg_match() 函數

在詳細的講原子之前,我們要先了解一個函數,那就是preg_match

#PHP 中的preg_match() 函數可以根據定義的正規表示式對字串進行搜尋以及匹配。

語法格式如下:

preg_match ( string $正则 , string $字符串 [, array &$结果] )

根據$正則也就是我們定義的正規表示式,在匹配$字串,如果存在則傳回符合個數,然後把符合的結果放在$結果裡。如果沒有符合到結果那就回傳0。

我們透過範例來看一下:

<?php
//定义一个变量叫a,作为我们定义的正则表达式。
$a = &#39;/a/&#39;;
$b = &#39;abbcccddddeeeee&#39;;
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

輸出結果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

由上述範例可以看出,我們定義了變數a,希望能夠匹配的是a,正好在$b中存在a,透過if else語句輸出成功了。

再來一個範例:

<?php
//定义一个变量叫a,作为我们定义的正则表达式。
$a = &#39;/fff/&#39;;
$b = &#39;abbcccddddeeeee&#39;;
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

輸出結果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

#在上述範例中,希望符合到字串,但是$ b中不存在,所以沒有匹配成功,透過if else語句輸出為匹配成功。

知道了preg_match() 函數的基本用法之後我們可以和特殊標識的原子結合起來使用。

特殊標識的原子

  • \d---符合一個0-9    

  • #\D---除了0-9以外的所有字元   

  • #\w---a-zA- Z0-9_    

  • \W---除了0-9A-Za-z_以外的所有字元   

  • #\s---符合所有空白字元\n \t \r 空格   

  • #\S---符合所有非空白字符   

  • [ ]---指定範圍的原子   

它們的具體用法給大家一個例子就明白了:

<?php
$a = &#39;/\d/&#39;;
$b = &#39;人生自古谁无4&#39;;
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

輸出結果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

在上述範例中,特殊標識的原子\d表示的就是0- 9的數字,那麼在需要匹配的$b中存在一個4,所以匹配成功。

<?php
$a = &#39;/\w/&#39;;
$b = &#39;人生自古谁无死&#39;;
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

輸出結果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

在上述實例中,特殊標識的原子\w表示的是a-zA-Z0-9_ ,在變數b中沒有對應的元素,所以輸出結果為未符合。

其中還有一個[^]字元表示不符合指定區間的字元。

範例如下:

<?php
$a = &#39;/[^0-9A-Za-z_]/&#39;;
$b = &#39;abbccc122333&#39;;
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

輸出結果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

通过[^]字符匹配除0-9A-Za-z_以外的字符,未匹配到。

总结一下:

  • \w---[a-zA-Z0-9_]    

  • \W---[^a-zA-Z0-9_]    

  • \d---[0-9]    

  • \D---[^0-9]    

  • \s---[ \t\n\f\r]    

  • \S---[^ \t\n\f\r]    

正则表达式的元字符

在上面的示例中,我们能够看出通过匹配的话,只能匹配一个字符,但是在我们的日常使用中,通常会匹配多个字符,那这时候只通过我们的原子就不能达到我们的目的。就需要通过元字符来帮我们修饰原子,实现更多的功能。

  • *---代表匹配前面的一个原子,匹配0次或者任意多次前面的字符。    

  • +---匹配一次或多次前面的一个字符    

  • ?---前面的字符可有可无【可选】 有或没有    

  • .---更标准一些应该把点算作原子。匹配除了\n以外的所有字符    或者。注:它的优先级最低了。    

  • ^---必须要以抑扬符之后的字符串开始    

  • $--- 必须要以$之前的字符结尾    

  • \b---词边界    

  • \B---非边界    

  • {m}---有且只能出现m次    

  • {n,m}---可以出现n到m次    

  • {m,}---至少m次,最大次数不限制    

  • ()---改变优先级或者将某个字符串视为一个整体,匹配到的数据取出来也可以使用它    

接下来我们通过一些例子来实例看一下这些元字符的使用:

<?php
$a = &#39;/\d+/&#39;;
$b = "爱你10000年";
if(preg_match($a, $b, $c)){
   echo &#39;匹配到了,结果为:&#39;;
   var_dump($c);
}else{
   echo &#39;没有匹配到&#39;;
}
?>

输出结果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

通过元字符+的添加,匹配到了多次字符,\d+中d是匹配数字,+则表示最少匹配一次前面的字符。

正则表达式的模式修正符

通过原子和元字符的了解,我们已经完成了正则表达式的入门,但是这仍然不能代表正则表达式的真正实力,如果我们只希望正则表达式匹配一部分应该怎么办?有些特殊情况依然需要处理,这时候我们就要用到正则表达式的模式修正符。

下面列举一些常用的模式修正符:

  • i    模式中的字符将同时匹配大小写字母.    

  • m    字符串视为多行    

  • s    将字符串视为单行,换行符作为普通字符.    

  • x    将模式中的空白忽略.    

  • A    强制仅从目标字符串的开头开始匹配.    

  • D    模式中的美元元字符仅匹配目标字符串的结尾.    

  • U    匹配最近的字符串.    

它的用法如下:

/正则表达式/模式修正符

接下来我们通过一些实例来看一下它的使用:

<?php  
    $a = &#39;/ABC/i&#39;; 
$b = &#39;8988abc12313&#39;;
$c = &#39;11111ABC2222&#39;; 
if(preg_match($a, $b, $d)){
     echo &#39;匹配到了,结果为:&#39;; 
    var_dump($d); }else{
     echo &#39;没有匹配到&#39;;
     }
 ?>

输出结果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

i可以让匹配的时候同时匹配大小写,那么接下来把匹配的$b换成$c试一下,我们看一下输出结果:

<?php  
    $a = &#39;/ABC/i&#39;; 
$b = &#39;8988abc12313&#39;;
$c = &#39;11111ABC2222&#39;; 
if(preg_match($a, $c, $d)){
     echo &#39;匹配到了,结果为:&#39;; 
    var_dump($d); }else{
     echo &#39;没有匹配到&#39;;
     }
 ?>

输出结果:

讓人心動的PHP的正規表示式基礎(圖例詳解)

推荐学习:《PHP视频教程

以上是讓人心動的PHP的正規表示式基礎(圖例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何修改PHP會話中存儲的數據?您如何修改PHP會話中存儲的數據?Apr 27, 2025 am 12:23 AM

tomodifyDataNaphPsession,startTheSessionWithSession_start(),然後使用$ _sessionToset,修改,orremovevariables.1)startThesession.2)setthesession.2)使用$ _session.3)setormodifysessessvariables.3)emovervariableswithunset()

舉一個在PHP會話中存儲數組的示例。舉一個在PHP會話中存儲數組的示例。Apr 27, 2025 am 12:20 AM

在PHP會話中可以存儲數組。 1.啟動會話,使用session_start()。 2.創建數組並存儲在$_SESSION中。 3.通過$_SESSION檢索數組。 4.優化會話數據以提升性能。

垃圾收集如何用於PHP會議?垃圾收集如何用於PHP會議?Apr 27, 2025 am 12:19 AM

PHP會話垃圾回收通過概率機制觸發,清理過期會話數據。 1)配置文件中設置觸發概率和會話生命週期;2)可使用cron任務優化高負載應用;3)需平衡垃圾回收頻率與性能,避免數據丟失。

如何在PHP中跟踪會話活動?如何在PHP中跟踪會話活動?Apr 27, 2025 am 12:10 AM

PHP中追踪用戶會話活動通過會話管理實現。 1)使用session_start()啟動會話。 2)通過$_SESSION數組存儲和訪問數據。 3)調用session_destroy()結束會話。會話追踪用於用戶行為分析、安全監控和性能優化。

如何使用數據庫存儲PHP會話數據?如何使用數據庫存儲PHP會話數據?Apr 27, 2025 am 12:02 AM

利用數據庫存儲PHP會話數據可以提高性能和可擴展性。 1)配置MySQL存儲會話數據:在php.ini或PHP代碼中設置會話處理器。 2)實現自定義會話處理器:定義open、close、read、write等函數與數據庫交互。 3)優化和最佳實踐:使用索引、緩存、數據壓縮和分佈式存儲來提升性能。

簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

See all articles

熱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

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),