Php preg_替换为URL问题

Php preg_替换为URL问题,php,regex,url,replace,preg-replace,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_con

我使用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 );
$pattern=“~(?!(?:[^\].[^>\]]+)(.preg\u quote($find\u关键字,'/'))”)\b~msUi”;
$replacement=“”;
$article\u content=preg\u replace($pattern,$replacement,stripslashes($article\u content),1,$added);
它工作得很好,除了一个问题:

如果关键字是URL,则它不匹配并替换

如果:
$find_关键字=”http://www.mysite.com/“
即使在内容中,也不会找到任何匹配项

我已经尝试用preg\u quote转义$find\u关键字,但没有任何不同。


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

您的$find\u关键字中的前斜杠没有转义,这打破了模式

您可以通过

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

我已经尝试过转义前斜杠,但没有任何不同。如果通过preg_quote()传递$find_关键字(所有输入到regex时都应该这样做),会发生什么情况?您是否考虑过链接到
http://example.com/“警报(“xss”)
?尝试时没有更改:
$pattern=“~(?!(?:[^\]]|[^>\]]+)(”。preg\u quote($find_关键字)。”)\b~msUi“
@user,所有HTML标记都从原始内容中剥离。阅读注释。它们被转义,没有任何区别。请发布示例$article_内容输入和所需输出。