UrlScraper の修正


このスクリプト、使わせていただいて、重宝しております。

https://qiita.com/mpyw/items/85d1e23dc7c58f1014d1

ただ、作られるリンクが、 ホストの部分とつながって取得されてしまう場合があるようでした。

スクリプト読んでも、どこを直したらよいかわからなかったので、以下のようにしました。

    //リンク ホストとパスの間に/がないときがある
    $host=parse_url($base_url, PHP_URL_HOST);
    $linksno=count($linklists);
    
    for($i=0;$i < $linksno;$i++){
        if(strpos($linklists[$i]['href'],$host.'/') === false){
            $linklists[$i]['href']=str_replace($host,$host.'/',$linklists[$i]['href']);
        }
    }

配列の中、見てみたら、ばっちりとうまく修正されていた。
単に、abc.jpaboutus.html のようになっていたのを hostをabc.jpとまずは取得して、
一つづつ、リンクをforで調べて、「abc.jp/」がないのは、変と考えて、「/」を入れるように置換しただけです。