PHP 正規表示式常用函式

2022-09-29 13:27:11 字數 3082 閱讀 4297

1.preg_match()

函式原型:int preg_match (string $pattern, string $content [, array $matches])

preg_match ()函式在$content字串中搜尋與$pattern給出的正規表示式相匹配的內容。如果提供了$matches,則將匹配結果放入其 中。$matches[0]將包含與整個模式匹配的文字,$matches[1]將包含第乙個捕獲的與括號中的模式單元所匹配的內容,以此類推。該函式只 作一次匹配,最終返回0或1的匹配結果數。**6.1給出preg_match()函式的一段**示例。

**6.1 日期時間的匹配

**如下:

php

//需要匹配的字串。date函式返回當前時間

$content = "current date and time is ".date("y-m-d h:i a").", we are learning php together.";

//使用通常的方法匹配時間

if (preg_match ("//d-/d-/d /d:/d [ap]m/", $content, $m))

//由於時間的模式明顯,也可以簡單的匹配

if (preg_match ("/([/d-]) ([/d:] [ap]m)/", $content, $m))

?>

這是乙個簡單動態文字串匹配例項。假設當前系統時間是「2023年8月17日13點25分」,將輸出如下的內容。

匹配的時間是:2006-08-17 01:25 pm

當前日期是:2006-08-17

當前時間是:01程式設計客棧:25 pm

2.ereg()和eregi()

ereg()是posix擴充套件庫中正規表示式的匹配函式。eregi()是ereg()函式的忽略大小寫的版 本。二者與preg_match的功能類似,但函式返回的是乙個布林值,表明匹配成功與否。需要說明的是,posix擴充套件庫函式的第乙個引數接受的是正則 表示式字串,即不需要使用分界符。例如,**6.2是乙個關於檔名安全檢驗的方法。

**6.2 檔名的安全檢驗

**如下:

<?php $username = $_server['remote_user'];

$filename = $_get['file'];

//對檔名進行過濾,以保證系統安全

if (!ereg('^[^./][^/]*$', $userfile))

//對使用者名稱進行過濾

if (!ereg('^[^./][^/]*$', $username))

//通過安全過濾,拼合檔案路徑

$thefile = "/home/$username/$filename";

?>

通常情況下,使用與perl相容的正規表示式匹配函式perg_match(),將比使用ereg()或eregi()的速度更快。如果只是查詢乙個字串中是否包含某個子字串,建議使用strstr()或strpos()函式。

正規表示式的替換

1.ereg_replace()和eregi_replace()

函式原型:string ereg_replace (string $pattern, string $replacement, string $string)

string eregi_replace (string $pattern, string $replacement, string $string)

ereg_replace()在$string中搜尋模式字串$pattern,並將所匹配結果替換 為$replacement。當$pattern中包含模式單元(或子模式)時,$replacement中形如「/1」或「$1」的位置將依次被這些子 模式所匹配的內容替換。而「/0」或「$0」是指整個的匹配字串的內容。需要注意的是,在雙引號中反斜線作為轉義符使用,所以必須使用「//0」,「 //1」的形式。

eregi_replace()和ereg_replace()的功能一致,只是前者忽略大小寫。**6.6是本函式的應用例項,這段**演示了如何對程式源**做簡單的清理工作。

**6.6 源**的清理

**如下:

<?php $lines = file('source.php'); //將檔案讀入陣列中

for($i=0; $i

2.preg_replace()

函式原型:mixed preg_replace (mixed $pattern, mixed $replacement, mixed $subject [, int $limit])

preg_replace較ereg_replace的功能更加強大。其前三個引數均可以使用陣列;第四個引數$limit可以設定替換的次數,預設為全部替換。**6.7是乙個陣列替換的應用例項。

**6.7 陣列替換

**如下:

<?php //字串

$string = "name:

/nemail:

/naddress:

/n";

//模式

); //替換字串

$replacements = array (

"no.5, wilson st., new york, u.s.a",

"thomas ching",

"[email protected]",

); //輸出模式替換結果

print preg_replace($patterns, $replacements, $string);

?>

輸出結果如下。

name: thomas ching",

email: [email protected]

address: no.5, wilson st., new york, u.s.a

在preg_replace的正規表示式中可以使用模式修正符「e」。其作用是將匹配結果用作表示式,並且可以進行重新運算。例如:

**如下:

<?php $html_body = 「my picture

PHP 正規表示式常用的函式

php正規表示式常用的函式 int preg match string pattern string subject array matches int flags 0 int offset 0 int preg match all string pattern string subject arr...

正規表示式 常用正規表示式

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

正規表示式 常用正規表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...