我試圖使用DOM來提取HTML頁面的鏈接:用於匹配和刪除URL的PHP Regex或DOMDocument?
$html = file_get_contents('links.html');
$DOM = new DOMDocument();
$DOM->loadHTML($html);
$a = $DOM->getElementsByTagName('a');
foreach($a as $link){
//echo out the href attribute of the <A> tag.
echo $link->getAttribute('href').'<br/>';
}
輸出:
http://dontwantthisdomain.com/dont-want-this-domain-name/
http://dontwantthisdomain2.com/also-dont-want-any-pages-from-this-domain/
http://dontwantthisdomain3.com/dont-want-any-pages-from-this-domain/
http://domain1.com/page-X-on-domain-com.html
http://dontwantthisdomain.com/dont-want-link-from-this-domain-name.html
http://dontwantthisdomain2.com/dont-want-any-pages-from-this-domain/
http://domain.com/page-XZ-on-domain-com.html
http://dontwantthisdomain.com/another-page-from-same-domain-that-i-dont-want-to-be-included/
http://dontwantthisdomain2.com/same-as-above/
http://domain3.com/page-XYZ-on-domain3-com.html
我想刪除所有結果匹配dontwantthisdomain.com,dontwantthisdomain2.com和dontwantthisdomain3.com所以輸出將看起來像這樣:
http://domain1.com/page-X-on-domain-com.html
http://domain.com/page-XZ-on-domain-com.html
http://domain3.com/page-XYZ-on-domain3-com.html
有些人說我不應該使用正則表達式對HTML和其他人,這是確定。有人可以指出我如何從我的html文件中刪除不需要的URL? :)
嗯,你的腳本的剩餘輸出沒有任何HTML更多的,是嗎?因此,一旦用DOM解析器從HTML中獲取鏈接,通過正則表達式進行篩選就非常好。雖然在這種情況下,可能有更簡單的選擇。例如,你可以使用['parse_url'](http://php.net/manual/en/function.parse-url.php)獲得域名(* host *),然後檢查它是否在黑名單中不需要的域名。 –