【发布时间】:2012-02-02 00:48:29
【问题描述】:
我正在解析一个输入,即 HTML。但是,我需要能够找到所有没有协议的 href 或 src 属性,例如 http://、https:// 或 ftp:// 等,并且当它们没有将其替换为一个包含协议和域的变量。
比如说我想要
<a href="/_mylink/goes/here">Link 1</a>
<a href="http://site.com/_myotherlink/goes/here">Link 2</a>
返回:
<a href="http://mydomain.com/_mylink/goes/here">Link 1</a>
<a href="http://site.com/_myotherlink/goes/here">Link 2</a>
我可以获得整个 href 属性,但我似乎无法弄清楚如何仅在缺少协议时匹配和替换。我发现 [^0-9] 会以相反/非方式工作,但我发现在尝试使用 http:// 等时我无法让它工作。
编辑:
只是提一下,因为对我来说很明显它是这个问题的“范围”的一部分,我想避免由于替换而使用 url 编码,因为我使用 {} 之类的东西其中一些,我不希望它们中有 %7B %7D 之类的东西。
【问题讨论】:
标签: php regex preg-replace