Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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-preg_replace-向href和src元素添加协议_Php - Fatal编程技术网

php-preg_replace-向href和src元素添加协议

php-preg_replace-向href和src元素添加协议,php,Php,是否可以向不包含协议的URL(href&src)添加协议 例如,我想替换此URL: <a href="/page/image.png" target="_blank">TEXT</a> 我会在sed或其他配方中使用此正则表达式: sed 's/href="/href="http://site.domain/g' 如果我没有弄错的话,我想在很多情况下只要就可以了。我们考虑了一些更精确的东西,比如?我想在我的网站上打印另一个网站的代码,所以如果我想看到原始网站的所有图片,

是否可以向不包含协议的URL(href&src)添加协议

例如,我想替换此URL:

<a href="/page/image.png" target="_blank">TEXT</a>

我会在sed或其他配方中使用此正则表达式:

sed 's/href="/href="http://site.domain/g'

如果我没有弄错的话,我想在很多情况下只要
就可以了。我们考虑了一些更精确的东西,比如?我想在我的网站上打印另一个网站的代码,所以如果我想看到原始网站的所有图片,我必须添加完整的URL。@Machavity我想使用regex来完成。我不会;我不喜欢使用DOMDocument,因为DOMDocument会打印出一个错误,如果在HTML代码中会出现一些错误,例如在代码中会添加标记而不关闭。DOMDocument对我来说不是一个好的解决方案。我知道你在尝试做什么,我相信这应该是可能的。如果您有一些尝试过的代码作为起点,这将非常有用。
$url = 'http://my-page.com/';
$html = file_get_contents($url);
preg_match('"charset=([A-Za-z0-9\-]+)"si', $html, $charset);
$charset = strlen($charset[1]) > 3 ? $charset[1] : 'UTF-8';
$html = mb_convert_encoding($html, 'HTML-ENTITIES', $charset);

preg_match_all('"href=\"(.*?)\""si', $html, $matches);

foreach($matches[1] AS $key => $value)
{
    if ( preg_match("/^(http|https):/", $value) )
    {
        continue;
    }

    $html = str_replace($value, $url.$value, $html);
}

preg_match_all('"src=\"(.*?)\""si', $html, $matches);

foreach($matches[1] AS $key => $value)
{
    if ( preg_match("/^(http|https):/", $value) )
    {
        continue;
    }

    $html = str_replace($value, $url.$value, $html);
}

echo $html;
sed 's/href="/href="http://site.domain/g'