尝试替换字符串一次并获得此错误会感激任何帮助。
$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
有什么想法吗?我想要的只是用链接替换第一次出现的文本
答案 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
上查看此处的工作
如果$anchor
可能包含某些需要转义为正则表达式模式的字符,则您需要使用preg_quote()
。