2012-03-26 51 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