【发布时间】:2011-03-28 19:38:37
【问题描述】:
我使用 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 个问题:
如果关键字是 URL,则不匹配和替换。
如果:$find_keyword="http://www.mysite.com/",即使在内容中,它也不会提供任何匹配项。
我已经尝试使用 preg_quote 转义 $find_keyword,但没有任何不同。
任何正则表达式专家知道解决方案吗?谢谢。
【问题讨论】:
-
我已经尝试转义正斜杠,但没有任何不同。
-
如果你通过 preg_quote() 传递 $find_keyword 会发生什么(你应该将所有输入都输入到正则表达式)?
-
你有没有想过链接到
http://example.com/"<script>alert("xss")</script>的用户? -
我尝试时没有变化:
$pattern = "~(?!(?:[^<\[]+[>\]]|[^>\]]+<\/a>))(".preg_quote($find_keyword).")\b~msUi"; -
@user,所有 HTML 标签都从原始内容中剥离。
标签: php regex url replace preg-replace