2011-05-09 56 views
2

我有這樣的HTML標籤:警告:的preg_match()[function.preg匹配]:未知的修飾詞 '('

<div class="title">Copy me if you can</div> 

所以我想使用的preg_match採取 只是 「如果你可以複製我」我使用這個模式浸漬:

$preg = "<div class=\"title\">(.+?)</div>"; 

所以我寫了這個代碼

$match = preg_match($preg,$content); 

瀏覽器輸出:

Warning: preg_match() [function.preg-match]: Unknown modifier '(' 

什麼

+0

http://stackoverflow.com/questions/1531456/is-there-a-php-function-that-c​​an-escape-正則表達式模式在他們被應用之前 – zloctb 2015-10-27 11:19:52

回答

1

您需要delimites添加到您的正則表達式。試試這個:

$preg = "/<div class=\"title\">(.+?)<\/div>/"; 

/是這標誌着你的正則表達式的開始和結束的分隔符。分隔符的原因是,您可以將標誌添加到您的正則表達式中。這些標誌插在你的正則表達式之後。例如:

$preg = "/<div class=\"title\">(.+?)<\/div>/i"; 

我添加i作爲改性劑,標誌着正則表達式搜索不區分大小寫。

+1

你不需要在你的關閉div中轉義/?另外,當你匹配點時區分大小寫不是問題 – 2011-05-09 19:35:03

+0

@Nev它只是解釋分隔符的一個例子。 – alexn 2011-05-09 19:46:04

+1

理解,但它不會有人真的嘗試它。如果不使用<\/div>,你只會混淆那些不熟悉的人。 – 2011-05-09 19:48:29

4

你忘了分隔符

$preg = '~<div class="title">(.+?)</div>~'; 

在模式的第一個字母總是定義使用的分隔符。在你的情況下,它的<,所以結尾分隔符是>。之後的所有內容都被用作特殊的修飾語,改變特定的行爲。 (不是有效的修飾符。那是錯誤消息想告訴你:)什麼

+0

它的作品!謝謝(:,但是有沒有任何RegExp只需要標籤之間的內容?(如果可以,請複製我的內容),我的RegExp採用整個標記:/我知道我可以使用str_replace()來替換標記,但只用一個RegExp來完成這項工作更好xD – Adam 2011-05-10 09:50:59

1

嘗試:$preg = '/<div class="title">([^<]+)</div>/';

1

個人而言,當HTML參與我會避開從事實上的分隔符/拿走並使用#代替你不必記住以逃避任何關閉的HTML標籤。

$preg = '#<div class="title">([^<]+)</div>#'; 
1

我有同樣的問題,並想知道如果我能做到這一點,例: 警告:的preg_match()[function.preg匹配]:在未知的修飾詞 'T' 的/ home/08 /公/www/wp-content/plugins/woocommerce-gateway-dibs-form/gateway-dibs.php線707

這是代碼: 如果(的preg_match($ _ SERVER [ 「REQUEST_URI」],「woocommerce/'')==假){

 header("HTTP/1.1 200 Ok"); 

     $callback = new WC_Gateway_Dibs; 
     $callback->cancel_order(stripslashes_deep($_REQUEST)); 
     return; 
    } 
相關問題