2011-03-28 106 views
0

我使用preg_replace自动在段落中插入HTML链接。带网址问题的preg_replace

这是我目前使用:

$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个问题:

不匹配,如果关键字是替换URL。

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

我已经尝试使用preg_quote转义$ find_keyword,它没有任何区别。

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

+0

我已经尝试过逃跑斜杠运行find_keyword,它没有做任何的不同。 – Ricky 2011-03-28 19:43:05

+2

如果您通过preg_quote()传递$ find_keyword会发生什么情况(您应该将所有输入都转换为正则表达式)? – 2011-03-28 19:45:21

+0

您是否想过链接到http://example.com/的用户'? – Incognito 2011-03-28 19:46:01

回答

1

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

+0

阅读 – Ricky 2011-03-28 20:12:55