我需要匹配代码中的相对网址,并将其替换为绝对网址。在这些相对网址中有一个~
字符,我似乎无法匹配。
$page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page);
$page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page);
这应该取代我的网址,但它不能使用这些网址:
怎么样?
答案 0 :(得分:0)
我会使用这个正则表达式:
(?:src="|href=")(?!http)\/?(.+?)"
这样您就可以抓住src
或href
属性中的所有网址,这些网址不会以http
开头(并且它会关注是否存在领先斜线):
$page = preg_replace('/(?:src="|href=")(?!http)\/?(.+)"/i', $url . '$1', $page);
答案 1 :(得分:0)
/~/
仍然无效。它应该用域替换/~/
只有,没有子文件夹。
如果我们之后在额外的替换步骤中执行此操作,这可能是最简单的。
$domain = 'www.domain.dk';
$page = preg_replace("#($domain/)~/#", '$1', $page);