phpRegex之preg_match()用法_PHP教程

來源:互聯網
上載者:User
利用 preg_match(),我們可以完成字串的規則匹配。如果找到一個匹配,preg_match() 函數返回 1,否則返回 0。還有一個可選的第三參數可以讓你把匹配的部分存在一個數組中。在驗證資料時這個功能可以變得非常有用。
代碼如下 複製代碼

// 模式定界符後面的 "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.";

}

?>

取得目前時間

代碼如下 複製代碼

//需要匹配的字串。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 地址為正確格式。現在讓我們來看看這段Regex所代表的各種規則。

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

代碼如下 複製代碼

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

從網址擷取網域名稱

代碼如下 複製代碼
preg_match("/^(http://)?([^/]+)/i", "http://www.bKjia.c0m/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.bKjia.c0m
[1] => http://
[2] => www.bKjia.c0m )


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

http://www.bkjia.com/PHPjc/628982.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628982.htmlTechArticle利用 preg_match(),我們可以完成字串的規則匹配。如果找到一個匹配,preg_match() 函數返回 1,否則返回 0。還有一個可選的第三參數可以讓...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.