href
任意の HTML ソースで自分の URL を含むすべてのタグを検索したいと考えています。
私はこのコードを使用しました:
preg_match_all("'<a.*?href=\"(http[s]*://[^>\"]*?)\"[^>]*?>(.*?)</a>'si", $target_source, $matches);
例として、次を含む href タグを見つけようとします。http://www.emrekadan.com
どうすればできますか?
href
任意の HTML ソースで自分の URL を含むすべてのタグを検索したいと考えています。
私はこのコードを使用しました:
preg_match_all("'<a.*?href=\"(http[s]*://[^>\"]*?)\"[^>]*?>(.*?)</a>'si", $target_source, $matches);
例として、次を含む href タグを見つけようとします。http://www.emrekadan.com
どうすればできますか?
DOM
この目的には、単純に PHP のパーサーを使用します。これは正規表現より難しいように見えるかもしれませんが、実際にははるかに簡単で、HTML を解析する正しい方法です。
$url = 'WEBSITE_TO_SEARCH_FOR';
$searchstring = 'YOUR_SEARCH_STRING';
$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$result = array();
foreach($dom->getElementsByTagName('a') as $link) {
$href = $link->getAttribute('href');
if(stripos($href, $searchstring) !== FALSE) {
$result[] = $href;
}
}
if(!empty($result)) print_r($result);
説明:
loadHTMLfile()
メソッドを使用して指定された URL を読み込みます<a>
、それらをループしますstripos()
href に指定された検索用語が含まれているかどうかを大文字と小文字を区別せずにチェックするために使用します$result
配列にプッシュされます注: ファイル名として空の文字列が渡された場合、または空のファイルが指定された場合、警告が生成されます。私は@
そのメッセージを隠していましたが、一般的に悪い習慣と見なされています。追加のチェックを追加して、URL をロードする前にその URL が存在することを確認できます。