php-preg_replace-向href和src元素添加协议
是否可以向不包含协议的URL(href&src)添加协议 例如,我想替换此URL: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' 如果我没有弄错的话,我想在很多情况下只要就可以了。我们考虑了一些更精确的东西,比如?我想在我的网站上打印另一个网站的代码,所以如果我想看到原始网站的所有图片,
<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'