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",
); //輸出模式替換結果
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...