将字符串搜索为html文件的功能

时间:2013-06-04 17:50:43

标签: php html string search

传递HTML文件,我必须搜索其中的所有链接,并为 每一个,我必须回答,如果它是一个现有的链接(作为一个 URL验证程序,但适用于HTML文件)。我用了函数“fsockopen()” PHP,它告诉我URL(HTML链接,在我的情况下)仍然 存在。

我的问题如下:是否有允许我使用的PHP函数 搜索我传递给它的每个<a href="..."> HTML文件?和 只选择链接的字符(字符包含在“的”中) 我可以将它传递给URL验证器的变量吗?

2 个答案:

答案 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)来启动