RegEx:匹配URL包括代字号

时间:2014-11-12 10:51:42

标签: php regex

我需要匹配代码中的相对网址,并将其替换为绝对网址。在这些相对网址中有一个~字符,我似乎无法匹配。

$page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page);
$page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page);

这应该取代我的网址,但它不能使用这些网址:

怎么样?

2 个答案:

答案 0 :(得分:0)

我会使用这个正则表达式:

(?:src="|href=")(?!http)\/?(.+?)"

Regular expression visualization

Debuggex Demo

这样您就可以抓住srchref属性中的所有网址,这些网址不会以http开头(并且它会关注是否存在领先斜线):

$page = preg_replace('/(?:src="|href=")(?!http)\/?(.+)"/i', $url . '$1', $page);

答案 1 :(得分:0)

  

/~/仍然无效。它应该用域替换/~/   只有,没有子文件夹。

如果我们之后在额外的替换步骤中执行此操作,这可能是最简单的。

$domain = 'www.domain.dk';
$page = preg_replace("#($domain/)~/#", '$1', $page);