[精讚] [會員登入]
1088

[PHP] preg_match 的貪婪和不貪婪比對

在php preg_match中預設是採用貪婪比對,太貪婪反而不符合需要,因此得採用「非貪婪比對」...

此文完整連結 http://n.sfs.tw/10433

複製連結 [PHP] preg_match 的貪婪和不貪婪比對@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2016-12-14 23:42:19 最後編修
2016-12-14 23:42:19 By 張○○
 

[PHP] preg_match 的貪婪和不貪婪比對 greedy/non-greedy match

在php preg_match中預設是採用貪婪比對,太貪婪反而不符合需要,因此得採用「非貪婪比對」,只要在modifier 中加上"U"即可,如下範例:

$str= "A running <b>dog</b> rams a walking <b>pig</b>.";
 
// Greedy matches ... default matches 貪婪比對,取出最大字串
$IsMatch= preg_match('/<b>(.*)<\/b>/', $str, $match);
if( $IsMatch ){
  print $match[1] . "\n" ;
}
 
// Nongreedy matches, use U modifier 非貪比對,取出最頭及最小字串
$IsMatch= preg_match('/<b>(.*)<\/b>/U', $str, $match);
if( $IsMatch ){
  print $match[1] . "\n" ;
}

執行結果:

dog</b> rams a walking <b>pig
dog

參考資料

[1] PHPcook http://docstore.mik.ua/orelly/webprog/pcook/ch13_05.htm

[2] Regex modifiers http://php.net/manual/en/reference.pcre.pattern.modifiers.php


原文 2013-09-25 01:11:01

你可能感興趣的文章

設定Google analytics API #2 -- PHP的程式安裝和撰寫 讓你的網站能夠存取你的Google analytics上面的資料

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI

[PHP] 如何寫callback function 召回函數(回呼函數) PHP如何寫召回函數或回呼函數(callback function)?

[PHP] 類別的繼承及建構子和解構子 PHP 類別的繼承及建構子和解構子

[PHP] 移除陣列或字串中的重覆元素 移除陣列或字串中的重覆元素

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

[PHP] IPv6檢查IP是否在某個網段內 mtachcidr6 要檢查IPv6是否在某個IPv6的網段內?

[PHP] 2個程式的觀念 整理2個PHP的程式觀念,參考參考。

設定Google analytics API #1 -- Google網站上的設定 讓你的網站能夠存取你的Google analytics上面的資料

[PHP] 好用的php常數 介紹PHP中 __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__等常數

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[MAC] 截取螢幕畫面的方法 截取螢幕畫面的方法,在MAC中叫作螢幕快照,英文是screenshot

Linux shell 的date表示法 linux下SHELL中的date表示法

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

[CKeditor4] 修改特殊字元 CKeditor4 中設定自己想用的特殊字元

[HTLM5] 表單color、email、url、search、tel輸入類型 介紹HTML5好用的輸入類型:color、email、url,以及兩個形同雞肋的類型search、tel..