带URL问题的preg_replace

时间:2011-03-28 19:38:37

标签: php regex url replace preg-replace

我使用preg_replace在段落中自动插入HTML链接。

以下是我目前使用的内容:

$pattern = "~(?!(?:[^<\[]+[>\]]|[^>\]]+<\/a>))(".preg_quote($find_keyword, '/').")\b~msUi";
$replacement = "<a href=\"http://$kw_url\" title=\"$find_keyword\">\$0</a>"; 
$article_content = preg_replace($pattern, $replacement, stripslashes($article_content), 1, $added );

除了1个问题外,它很有效:

如果关键字是网址,则不匹配并替换。

如果:$find_keyword="http://www.mysite.com/"即使它在内容中也不会出现任何匹配。

我已经尝试使用preg_quote转义$ find_keyword,但没有任何不同。

任何正则表达式专家都知道解决方案吗?感谢。

2 个答案:

答案 0 :(得分:1)

$ find_keywords中的正斜杠不会被转义,这会破坏模式。

答案 1 :(得分:0)

您可以通过

运行find_keyword
$find_keyword=preg_quote("http://www.mysite.com/", '/');

http://www.php.net/manual/en/function.preg-quote.php