0
我想为我的网站创建一个站点地图 所以基本上我扫描主页链接 并提取链接并对提取的链接递归执行相同的操作使用链接:识别外部链接和链接的完整地址
function get_contents($url = '') {
if($url == '') { $url = $this->base_url; }
$curl = new cURL;
$content = $curl->get($url);
$this->get_links($content);
}
public function get_links($contents){
$DOM = new DOMDocument();
$DOM->loadHTML($contents);
$a = $DOM->getElementsByTagName('a');
foreach($a as $link){
$h = $link->getAttribute('href');
$l = $this->base.'/'.$h;
$this->links[] = $l ;
$this->get_contents($l);
}
}
它工作正常,但有几个问题
1-
我得到一些链接IKE
www.mysite.com/http://www.external.com
我可以这样做
if(stripos($link , 'http') !== false
||
stripos($link , 'www.') !== false
||
stripos($link , 'https') !== false
)
{
if(stripos($link , 'mysite.com') !== false)
{
//ignor this link (yeah i suck at regex and string mapping)
}
}
,但它似乎很复杂,速度慢,有没有办法找出一个链接是一个外部链接的所有标准和清洁的方式?
2 -
有没有办法处理相对路径? 我得到这样
www.mysite.com/../Domain/List3.html
一些事情obviusly这是不对的 我可以从链接中删除(../),但它可能无法与所有的链接 工作反正是有找到一个链接的完整地址?
您使用的是哪种CMS或框架 - 如果有的话 - 可能有更好的方法? –
@jakenoble无! – max