1

<a>Web サイトの送信タグをすべて検索して表示する簡単なスクリプトを作成しました。

これを行うには、最初にサイトマップをスクレイピングし、それらの URL を配列に入れます。次に、URL をループして各 URL をスクレイピングし、個別にタグを探し<a>ます。次に、見つかった各タグを実行strpos()して、無視したい URL があるかどうかを確認します。

スクリプトの完了 (ローカルでの実行) には約 5 分 (500 ページのスクレイピング) かかります。現時点で私が使用している

//SEES IF URL CONTAINS EXCLUDED PARAM
function find_excluded_url ($match_url) {
    return strpos($match_url, "mydomain.co.uk") ||
        strpos($match_url, "tumblr.com") ||
        strpos($match_url, "nofollow") ||
        strpos($match_url, "/archive") || 
        strpos($match_url, "page/2");
}

次に、使用して結果を表示するには

if ( find_excluded_url($element) == false ) {
   echo "<a href='$element->href'>" . $element->href . "</a>";
} 

これを達成するためのよりパフォーマンスの高い方法はありますか?

これが非常に明白な質問である場合は申し訳ありませんが、これは私がPHPで構築した最初の本物です

4

4 に答える 4

0
function find_excluded_url($match_url, $excludeList)
{
    foreach($excludeList as $excluded)
    {
        if(stristr($match_url, $excluded) !== FALSE)
        return TRUE;
        else return FALSE;
    }
}

$excludes = array(
                      'mydomain.co.uk'
                    , 'tumblr.com'
                    , 'nofollow'
                    , '/archive'
                    , 'page/2'
                 );

$example1 = 'http://example.mydomain.co.uk/dir/';
$example2 = 'https://not.in/excludes';
var_dump(find_excluded_url($example1, $excludes));
var_dump(find_excluded_url($example2, $excludes));

// output from browser:  bool(true) bool(false)
于 2013-04-10T12:53:46.483 に答える
0

要素が文字列の先頭にあり、要素が文字列内にない場合にstrpos返されます。0false

PHPの場合0、 とfalseは同じものです。つまり、スクリプトはキーワードで始まるリンクを識別しません。

したがって、スクリプトを次のように変更することをお勧めします。

function find_excluded_url ($match_url) {
    return strpos($match_url, "mydomain.co.uk") !== false ||
         strpos($match_url, "tumblr.com") !== false ||
         strpos($match_url, "nofollow") !== false ||
         strpos($match_url, "/archive") !== false || 
         strpos($match_url, "page/2") !== false;
}
于 2013-04-10T11:31:36.953 に答える