传递HTML文件,我必须搜索其中的所有链接,并为 每一个,我必须回答,如果它是一个现有的链接(作为一个 URL验证程序,但适用于HTML文件)。我用了函数“fsockopen()” PHP,它告诉我URL(HTML链接,在我的情况下)仍然 存在。
我的问题如下:是否有允许我使用的PHP函数
搜索我传递给它的每个<a href="...">
HTML文件?和
只选择链接的字符(字符包含在“的”中)
我可以将它传递给URL验证器的变量吗?
答案 0 :(得分:1)
您可以使用DOMDocument轻松完成此操作: -
$html = file_get_contents('http://www.telematica220998.altervista.org/listRicette.html');
$dom = new DOMDocument();
$dom->loadHTML($html);
$anchors = $dom->getElementsByTagName('a');
foreach($anchors as $anchor){
var_dump($anchor->getAttribute('href'));
//or whatever you want to do with them.
}
输出: -
string 'http://telematica220998.altervista.org/tortino_cioccolato_fond.html' (length=67)
string 'http://telematica220998.altervista.org/baci_di_dama.html' (length=56)
string 'http://telematica220998.altervista.org/biscotti_noci_e_nocciole.html' (length=68)
string 'http://telematica220998.altervista.org/krumiri.html' (length=51)
string 'http://telematica220998.altervista.org/torta_meringata_fragole.html' (length=67)
string 'http://telematica220998.altervista.org/torta_pere_cioccolato.html' (length=65)
string 'http://telematica220998.altervista.org/cestini_frutta.html' (length=58)
string 'http://telematica220998.altervista.org/semifreddo_caffe.html' (length=60)
string 'http://telematica220998.altervista.org/rose_del_deserto.html' (length=60)
string 'http://telematica220998.altervista.org/tiramisu.html' (length=52)
string 'http://www.telematica220998.altervista.org/index.html' (length=53)
string 'http://facebook.com/maria.poli.cr' (length=33)
string 'http://fotogrph.com/' (length=20)
string '#' (length=1)
string '#' (length=1)
等.....
答案 1 :(得分:0)
使用wget对于这类事情来说要容易得多
wget --spider --force-html -i page.html
您甚至可以使用PHP运行它并解析输出
使用PHP看起来像
$output = `wget --spider --force-html -i page.html`
或
$output = shell_exec("wget --spider --force-html -i page.html");
如果你只需要jUST php,请使用curl(Checking link from a host with php)来启动