萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php正則表達式之preg_match()用法

php正則表達式之preg_match()用法

利用 preg_match(),我們可以完成字符串的規則匹配。如果找到一個匹配,preg_match() 函數返回 1,否則返回 0。還有一個可選的第三參數可以讓你把匹配的部分存在一個數組中。在驗證數據時這個功能可以變得非常有用。  代碼如下 復制代碼

<?php

// 模式定界符後面的 "i" 表示不區分大小寫字母的搜索

if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {

print "A match was found.";

} else {

print "A match was not found.";

}

?>

取得當前時間

 代碼如下 復制代碼

<?php

//需要匹配的字符串。date函數返回當前時間。 "現在時刻:2012-04-20 07:31 am"

$content = "現在時刻:".date("Y-m-d h:i a");

//匹配日期和時間.

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

{

echo "匹配的時間是:" .$m[0]. "n"; //"2012-04-20 07:31 am"

}

//分別取得日期和時間

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

{

echo "當前日期是:" .$m[1]. "n"; //"2012-04-20"

echo "當前時間是:" .$m[2]. "n"; //"07:31 am"

}

?>


這個例子將驗證出此 Email 地址為正確格式。現在讓我們來看看這段正則表達式所代表的各種規則。

獲取Google首頁title
比如說要獲取google首頁的title內容,代碼如下:

 代碼如下 復制代碼

<?php
$str = file_get_contents('http://www.google.com');
preg_match('/<title>(.*)</title>/', $str, $arr);
echo $arr[1];
?>

從網址獲取域名

 代碼如下 復制代碼 <?php
preg_match("/^(http://)?([^/]+)/i", "http://www.111cn.net/index.html", $matches);
$host = $matches[2]; // 從主機名中取得後面兩段
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo "domain name is: {$matches[0]}n";
?>

preg_match($pattern,$string,$matcher)其中$pattern對應的就是/^(http://)?([^/]+)/i,$string 是http://www.php.net/index.html,$match是匹配到的結果。

如果提供了 matches,則其會被搜索的結果所填充。$matches[0] 將包含與整個模式匹配的文本,$matches[1] 將包含與第一個捕獲的括號中的子模式所匹配的文本,以此類推。

$matches[0] 將包含與整個模式匹配的文本。咱們用pring_r打印出來第一個$matches:

 代碼如下 復制代碼

Array (
 [0] => http://www.111cn.net
 [1] => http://
 [2] => www.111cn.net )


$matches[0] 將包含與整個模式匹配的文本,$matches[1] 將包含與第一個捕獲的括號中的子模式所匹配的文本。在正則中,()代表模式:匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。就是說數組中下標為1的值就是正則中/^(http://)?([^/]+)/i第一個()裡的值!數組下標2的值以此類推。

copyright © 萬盛學電腦網 all rights reserved