【问题标题】:Retrieve specific link values form <a href> tag using php simple_html_dom.php [duplicate]使用php simple_html_dom.php从<a href>标签中检索特定的链接值[重复]
【发布时间】:2014-03-02 05:08:06
【问题描述】:

这是我到目前为止的代码, 这就是它应该打印的内容

http://schulnetz.nibis.de/
http://schulnetz.nibis.de/admin/eingeben.phtml?schulnr=35877&aendern=4
http://schulnetz.nibis.de/admin1/schule_edit.php?schulnr=35877
http://schulnetz.nibis.de/daten_mail.php?x=1&Schul_Nr=35877
http://www.grundschule-bierden.de/

我唯一有兴趣获得的href是

http://schulnetz.nibis.de/
http://schulnetz.nibis.de/admin/eingeben.phtml?schulnr=35877&aendern=4
http://schulnetz.nibis.de/admin1/schule_edit.php?schulnr=35877
http://schulnetz.nibis.de/daten_mail.php?x=1&Schul_Nr=35877

所以我需要一个只查找这些 href http://schulnetz.nibis.de/ 的循环,但我似乎无法找到如何执行此操作。例如,如果href是http://schulnetz.nibis.de/onehttp://schulnetz.nibis.de/twohttp://schulnetz.nibis.de/treehttp://schulnetz.nibis.de/fourhttp://another.wildow/我应该能够存储一个四,而不是另一个。

include('simple_html_dom.php');

function getHost($url) {
            $parseUrl = parse_url(trim($url));
            return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2)));
        }
$url = "http://schulnetz.nibis.de/db/schulen/schule.php?schulnr=35877&lschb=";
//simple way to add the http:// that dom requires, using curl is a better option
if (substr($url, 0, 4) != "http") {
$url = "http://$url";
}

$parsed_url = getHost($url);

$http_parsed_host = "http://$parsed_url/";
$html = file_get_html($url);

foreach($html->find('a') as $element) 

$dom = new DOMDocument();
@$dom->loadHTML($html);


$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {

$href = $hrefs->item($i);

$href_link = $href->getAttribute('href');

 if (substr($href_link, 0, 1) == "/") {
$href_link = trim($href_link,"/");

}   

 if (substr($href_link, 0, 2) == "//") {
$href_link = trim($href_link,"//");

} 

 if (substr($href_link, 0, 3) == "///") {
$href_link = trim($href_link,"///");

}  


      if ((substr($href_link, 0, 8) == "https://")) {

         $final_href_link[] = $href_link;


} else {

  if (substr($href_link, 0, 1) != "/") {
$final_href_link[] = "$http_parsed_host$href_link";
}

}             
}
$links_array = array_unique($final_href_link);
sort($links_array);
foreach ($links_array as $links) {

//echo "$links<br />";
echo "<a href='$links'>$links</a><br />";

}

【问题讨论】:

  • 该代码毫无意义。您正在一起使用 simplehtmldom 和 domdocument。您只需要其中一个,最好是后者。另外,你的 foreach 坏了。

标签: php html


【解决方案1】:

也许我误解了这里的问题,但你不能只使用strstr() 来查看 $url 是否包含“schulnetz.nibis.de”

if(strstr($url,'schulnetz.nibis.de')){...}

【讨论】:

  • 我已经尝试过了,对我不起作用。除非我做错了 if(strstr($url,'schulnetz.nibis.de')) { $final_href_link[] = $href_link; } echo "$final_href_link[]";
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2016-01-17
  • 2011-11-18
  • 2012-09-11
  • 2020-02-23
  • 1970-01-01
相关资源
最近更新 更多