PHP preg_replace:PHP错误[2]:preg_replace():分隔符不能是字母数字或反斜杠

时间:2011-11-20 07:36:38

标签: php

尝试替换字符串一次并获得此错误会感激任何帮助。

$link = '<a href="'.$url.'" title="'.$anchor.'">'.$anchor.'</a> ';
$text = preg_replace(/" ".$anchor." "/,"", $text,1);

收到此错误消息:

Error[2]: preg_replace(): Delimiter must not be alphanumeric or backslash

有什么想法吗?我想要的只是用链接替换第一次出现的文本

3 个答案:

答案 0 :(得分:0)

$link = '<a href="'.$url.'" title="'.$anchor.'">'.$anchor.'</a> ';
$text = preg_replace("/ ".$anchor." /" ,"" , $text , 1 );
// If the spaces were intended
// OR
$text = preg_replace("/".$anchor."/" ,"" , $text , 1 );
// If you do not mean for the anchor to have a space before and after it.

这些的正则表达式段必须是字符串或字符串数​​组。

答案 1 :(得分:0)

您应该使用不同的分隔符,并在这种情况下也使用双引号:

$text = preg_replace("~$anchor~", $link, $text, 1);

之前的错误是由无效语法引起的,或者由包含正斜杠本身的$anchor引起的。 (这需要进行转义。现在~作为分隔符,$anchor可能不包含一个。否则请参阅preg_quote。)

答案 2 :(得分:0)

我认为你正试图做这样的事情;

$text = "lorem ipsum dolor";

$anchor = "ipsum";

$link = '<a href="/foobar" title="'.$anchor.'">'.$anchor.'</a>';

$text = preg_replace('/'.preg_quote($anchor, '/').'/', $link, $text, 1);

echo $text;

#=> lorem <a href="/foobar" title="'.$anchor.'">'.$anchor.'</a> dolor

tehplayground.com

上查看此处的工作

如果$anchor可能包含某些需要转义为正则表达式模式的字符,则您需要使用preg_quote()