0

特定のページのリンクをチェックするスクリプトを使用しています。単純な html DOM を使用して、情報を配列に解析しています。すべての a タグの href をチェックして、ファイルまたは # や JS などのものが含まれているかどうかを確認する必要があります。

成功せずに次のことを試しました。

if(preg_match("|^(.*)|iU", $href)){
    save_link();
}

私のパターンが間違っているか、この機能を完了するためのより良い方法があるかどうかはわかりません。

$href に .com .php .file 拡張子が含まれているかどうかを検出できるようにしたいと考えています。このようにして、 # "function()" などのアイテムや、href 属性で使用されるその他のアイテムを除外します。

編集: parse_url は機能せず、投稿を停止します。値 # は、上記のように有効な URL として返されます。

4

3 に答える 3

0

次のようにparse_url()を使用できます。

$res = parse_url($href);
if ( $res['scheme'] == 'http' ||  $res['scheme'] == 'https'){
    //valid url
    save_link();
}

更新: httphttps
の URL のみをフィルタリングするコードを追加しました。これを見つけてくれた Baba に感謝します。

于 2012-10-12T19:48:15.070 に答える
0

あなたが探している機能はparse_url().

この関数は URL 文字列を受け取り、コンポーネントの配列を返します。これにより、URL の種類を特定できます。

ただし、5.4.7 より前の PHP バージョンでは不完全な URL の問題があるため、最大限に活用するには最新の PHP が必要です。

それが役立つことを願っています。

于 2012-10-12T19:51:38.230 に答える
0

http://php.net/manual/en/function.parse-url.phpを参照してください

内部アンカーをたどることに関心がないため、フラグメント (#) を一致させたくないと想定しています。

parse_url は、URL のさまざまな部分を配列に分割します。この配列で URL のパス コンポーネントを確認し、それに対してチェックを実行できます。

于 2012-10-12T19:52:29.577 に答える