Php preg_replace-仅在被空格包围时匹配
以下是我现有的代码:Php preg_replace-仅在被空格包围时匹配,php,regex,preg-replace,Php,Regex,Preg Replace,以下是我现有的代码: preg_replace("!((([a-z]{3,5}://))". "[-a-z0-9.]{2,}\.[a-z]{2,4}". "(:[0-9]+)?". "(/([^\s]*[^\s,.])?)?". "(\?([^\s]*[^\s,.])?)?)!i", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $s); preg\u replace(!(([a-z]{3,5}://)“[-a-z0-9.]
preg_replace("!((([a-z]{3,5}://))". "[-a-z0-9.]{2,}\.[a-z]{2,4}". "(:[0-9]+)?". "(/([^\s]*[^\s,.])?)?". "(\?([^\s]*[^\s,.])?)?)!i", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $s);
preg\u replace(!(([a-z]{3,5}://)“[-a-z0-9.]{2,4}”。(:[0-9]+)?”(/([^\s]*[^\s,.])?“(\?([^\s]*[^\s,.])?”(\(\([^\s]*[^\s,.])?)?)!i“,”,“,$s);
它获取一个链接并将其转换为HTML
问题是,有时我会得到一个我不想转换成HTML的URL。例如:
<img src="http://www.domain.com/img.png" />
因此,这将变成:
<img src="<a target="_blank" href ...
预防这种情况的最佳方法是什么?我认为只有在一个空间之间建立链接才能很好地工作。如何更改preg\u replace?您可以使用(\b
)
preg\u replace(!\b(([a-z]{3,5}://)“[-a-z0-9.]{2,4}.[a-z]{2,4}”。(:[0-9]+)?”(/([^\s]*[^\s,.])?“(\?([^\s]*[^\s,.])?)?)\b!i,“,”,“,$s);
尽管我更喜欢的技术是只在文本节点中搜索,这样就不必处理序列化HTML
如果您决定解析HTML,它非常方便
preg_replace("!\b((([a-z]{3,5}://))". "[-a-z0-9.]{2,}\.[a-z]{2,4}". "(:[0-9]+)?". "(/([^\s]*[^\s,.])?)?". "(\?([^\s]*[^\s,.])?)?)\b!i", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $s);