Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:匹配URL,包括tilde_Php_Regex - Fatal编程技术网

Php 正则表达式:匹配URL,包括tilde

Php 正则表达式:匹配URL,包括tilde,php,regex,Php,Regex,我需要在代码中匹配相对URL,并将其替换为绝对URL。在这些相对URL中有一个~字符,我似乎无法匹配 $page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page); $page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page); 这将替换我的

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

$page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page);
$page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page);
这将替换我的URL,但不适用于以下URL:

  • /盒式磁带.axd/样式表/fdbdaa59cb97b35f06f65fd41cb60caa3975cc0f/forbrug-rwd(最大宽度 767px)

这是怎么回事?

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

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

这将允许您捕获
src
href
属性中的所有URL,这些属性不以
http
开头(并且它将考虑是否存在前导斜杠):

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

这可能是最简单的,如果我们做了一个额外的更换步骤后

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

伟大的谢谢但是我得到了一个错误:
警告:preg_replace():未知修饰符“(”
…可能有什么格式错误吗?如果输入是:
,那么输出将是:
Ya,我们需要使用
(.+?)
而不是
(.+)
,抱歉,但它不起作用。replace已经删除了“href”和“src”…并且该值没有“/”和“:”当我添加这个时,它有点工作。
$page=preg\u replace('/(?:href=“)(!http)\/?(.+?)“/I”,“href=“.$url.$1.”,$page);
这个
/~/
仍然不工作。它应该只用域替换
/~/
,而不使用子文件夹。
$domain = 'www.domain.dk';
$page = preg_replace("#($domain/)~/#", '$1', $page);