2012-03-26 49 views
0

,所以我做未知修改錯誤

$subject = 'sakdlfjsalfdjslfad <a href="something/8230">lol is that true?</a> lalalala'; 

$subject = preg_replace('<a href="something\/([0-9]+)">(.+?)<\/a>', '$1', $subject); 

echo $subject; 

,從而客觀上有$主題返回

'sakdlfjsalfdjslfad lol is that true? lalalala' 

但隨後PHP返回

warning: preg_replace(): Unknown modifier '(' 

我怎麼做錯了?

回答

1

該模式需要分隔符 - 斜線,例如,

'/<a href="something\/([0-9]+)">(.+?)<\/a>/' 
1

您需要定界符模式:

$subject = preg_replace('#<a href="something/([0-9]+)">(.+?)</a>#', '$1', $subject); 
0

一個PCRE(Perl兼容的正則表達式)應該由分隔符包圍,所以

<a href="something\/([0-9]+)">(.+?)<\/a> 

應該

/<a href="something\/([0-9]+)">(.+?)<\/a>/ 

我已經使用sl灰燼(/) - 但也有很多選擇

當使用PCRE函數,它要求該圖案是通過 定界符包圍。分隔符可以是任何非字母數字的非反斜槓字符,非空白字符。

經常使用的分隔符是正斜槓(/),散列符號(#)和 (〜)。以下是有效分隔的 模式的所有示例。

here are the docs for delimiters in pregex