我使用simple_html_dom.php
从网页获取href的所有值。
这是我的代码:
<?php
include_once('simple_html_dom.php');
$url=$_GET['url']; //this is the target website address (for example, http://127.0.0.1/mysite/default.php?url=https://www.google.com)
if($url){
$html = file_get_html($url);
foreach($html->find('a') as $e) {
echo $e->href . '<br>';
}
}
?>
但问题是输出。输出如下:/about
,/domains
等,或//en.wikipedia.org
,//ro.wikipedia.org
等等。
如何将这些输出转换为标准网址,例如:http://www.example.com/about
或https://www.example.com/page
等?
答案 0 :(得分:0)
/**
* @param $href string URL To Convert
* @param $base_url string Remote server's base url. Like wikipedia.org (without http or https)
*/
function convert_url($href, $base_url = NULL){
$parse = parse_url($href);
$host = array_key_exists('host', $parse) ? $parse['host'] : $base_url;
$path = array_key_exists('path', $parse) ? $parse['path'] : '/';
$queryStr = array_key_exists('query', $parse) ? '?'.$parse['query'] : '';
$scheme = array_key_exists('scheme', $parse) ? $parse['scheme'].'://' : 'http://';
return $scheme.$host.$path.$queryStr;
}
答案 1 :(得分:0)
这样的事情:
include_once('simple_html_dom.php');
$url = isset($_GET['url']) ? $_GET['url'] : '';
$parsedUrl = parse_url($url);
if (!empty($parsedUrl['scheme']) && !empty($parsedUrl['host'])) {
$html = file_get_html($url);
foreach ($html->find('a') as $link) {
$l = http_build_url($link->href, [
'scheme' => $parsedUrl['scheme'],
'host' => $parsedUrl['host']
]);
echo $l . '<br>';
}
}
有关详细信息,请参阅函数http_build_url
的{{3}}。