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);