【发布时间】:2017-04-20 13:23:39
【问题描述】:
我正在尝试使用 php 正则表达式检测 url,并将所有 &amp 替换为 &。我在所有输入数据中都运行了htmlspecialchars,但我希望 url 可读。我做了这显然不起作用,因为替换部分是错误的。
preg_replace('!(http(s)?://((\S)|(&))*)!m', '&', $message);
基本上,我希望所有字符串保持不变,但在出现在 url 中时更改 &。我想使用preg_match_all,但如果数组的值不是通过引用传递的,它将不起作用。
关于我如何做到这一点的任何想法?
【问题讨论】:
-
它应该是
&而不仅仅是&amp...虽然我觉得有必要问一下为什么如果这些 URL 被嵌入到你想要替换它们HTML 文档... -
您是否有理由不想使用简单的
$message = str_replace('&amp', '&', $message);?您还想保留其他&amp吗? -
是的,可能还有更多的转义 & 我不想改变它们
-
CD001 的评论是相关的,如果 url 只是显示在 html 中,你不应该删除它们,如果计划使用 url,最好不要@987654330 @他们作为一个开始。由于不知道这里的全部目标,我们可能会错过更好的解决方案,但作为部分答案,您可以使用 Wiktor Stribiżew 的答案,在回调中使用 htmlspecialchars_decode() 来处理所有替换