Php 正则表达式:使所有URL成为绝对URL
我需要一种方法来采取HTML代码块,并使所有的网址绝对。我曾尝试采用各种正则表达式示例,但没有成功。这些是要求:Php 正则表达式:使所有URL成为绝对URL,php,regex,Php,Regex,我需要一种方法来采取HTML代码块,并使所有的网址绝对。我曾尝试采用各种正则表达式示例,但没有成功。这些是要求: 替换HREF和SRC URL 如果URL已经是绝对的,请保留它 如果URL是绝对的,则替换它 每个HTML都来自一个已知的URL(example.com/folder/file.HTML),可用于创建绝对URL。例如: src=“image.png”变为src=”http://example.com/folder/image.png" href=“/home.html”变成hre
- 替换HREF和SRC URL
- 如果URL已经是绝对的,请保留它
- 如果URL是绝对的,则替换它
如果html包含“href”或“src”外部标记,则此操作将失败,如
如何使用“src=“
”。这就是为什么人们通常建议对html使用专用的解析器,而不是regexp。Hehe。我明白了。目前,这是一个实验性的破解,但我肯定会在将来考虑一个合适的解析器。谢谢。据我所知,这是一种享受。我知道html中的正则表达式永远不会是完美的,但这将暂时起作用。谢谢你的快速回复!可能的重复:略有不同,但解决方案(使用基本标记)在这种情况下也适用。
$html = preg_replace_callback(
'~((href|src)\s*=\s*[\"\'])([^\"\']+)~i',
'replace',
$html);
function replace($x) {
$url = $x[3];
$url = your_url_conversion_function($url);
return $x[1] . $url;
}