我的preg_replace尝试中的未知修饰符错误

时间:2012-03-26 14:42:56

标签: php regex preg-replace preg-match

所以我做了

$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 '(' 

我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

你需要围绕这种模式的分隔符:

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

答案 2 :(得分:0)

PCRE(Perl兼容正则表达式)应该用分隔符包围,所以

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

应该是

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

我使用了斜杠(/) - 但有很多选择

  

使用PCRE功能时,需要使用模式   由分隔符括起来。分隔符可以是任何非字母数字,   非反斜杠,非空白字符。

     

经常使用的分隔符是正斜杠(/),哈希符号(#)和   波浪(〜)。以下是有效分隔的所有示例   图案。

here are the docs for delimiters in pregex