Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找同级的简单dom解析器_Php_Simple Html Dom - Fatal编程技术网

Php 查找同级的简单dom解析器

Php 查找同级的简单dom解析器,php,simple-html-dom,Php,Simple Html Dom,我试图刮一个html页面的链接,我需要找到例如所有标题标签的链接,并找到任何图像,它可能有,例如一个新闻网站将有一个标题 //scenario 1 <h2><a href="link-to-page">myHeading</a></h2> //image as sibling <a href="link-to-page"><img src="img.jpg" /></a> //scenario 2 <h2

我试图刮一个html页面的链接,我需要找到例如所有标题标签的链接,并找到任何图像,它可能有,例如一个新闻网站将有一个标题

//scenario 1
<h2><a href="link-to-page">myHeading</a></h2> //image as sibling
<a href="link-to-page"><img src="img.jpg" /></a>

//scenario 2
<h2><a href="link-to-page">myHeading
   <img src="img.jpg" />
</a></h2> // image as child
//场景1
//兄弟姐妹形象
//情景2
//儿童形象
我可以使用

$array=$html->find('h2 a');

foreach($array['h2'] as $h2{
   $heading[]=array('link'=>$h2->href, 'text'=>$h2->plaintext, 'img'=>$h2->find('img',0));
   echo $heading[$i]['link'].'<br />';
   echo $heading[$i]['text'].'<br />';
   echo $heading[$i]['img'].'<br />';
}
//of course this will be layout out differntly but at the moment just trying to get the image
$array=$html->find('h2a');
foreach($array['h2']作为$h2{
$heading[]=array('link'=>$h2->href,'text'=>$h2->明文,'img'=>$h2->find('img',0));
回声$heading[$i]['link'].
; 回显$heading[$i]['text']。
; 回显$heading[$i]['img']。
; } //当然,这将是不同的布局,但目前只是试图得到的形象
上面的代码仅在图像是'H2'标记的直接子对象时有效,在某些情况下,图像将是兄弟姐妹,在这种情况下,我无法处理它但我似乎无法实现这一点,是否有人对如何处理和图像不是父标记的子标记而是兄弟标记的情况有任何建议。也许我的方法需要重新思考。我要做的是找到与标题关联的图像,它可能在2种情况中的1种,即l的子或兄弟墨水

提前感谢

包括_once“simple\u html\u dom.php”;
include_once "simple_html_dom.php";

$url = "index.html";

$html = file_get_html($url);

foreach ($html->find("h2") as $h){

  foreach ($h->find("a") as $a){

    echo $a->href ."<br />";
    $img = $a->find("img",0);
    echo $img->src ."<br />";
  }
}
$url=“index.html”; $html=file\u get\u html($url); foreach($html->find(“h2”)作为$h){ foreach($h->find(“a”)作为$a){ echo$a->href.“
”; $img=$a->find(“img”,0); echo$img->src.“
”; } }
使用,这是可能的。如果您需要搜索每个可能的有效标题标记:
h1、h2、h3、h4、h5、h6
,那么这可以在一个循环中完成。找到标题标记后,我们将使用该节点作为根节点开始搜索其他所需的标记

$dom = new DOMDocument(''); 

// prevents PHP from warning us that header, footer are invalid tags.
@$dom->loadHTMLFile($url); 

$links  = array();
$images = array();

for($i = 1; $i <= 6; $i++) {
  $heading_level = (string)$i;
  $heading = 'h' . $heading_level;

  foreach($dom->getElementsByTagName($heading) as $h) {   
    foreach($h->getElementsByTagName('a') as $link) {
      array_push($links, array(
        "href"      => $link->getAttribute('href'),
        "innerHTML" => $link->nodeValue
      ));
    }
    foreach($h->getElementsByTagName('img') as $img) {
      array_push($images, array(
        "src" => $img->getAttribute('src')
      ));
    }
  }
}
$dom=新的DOMDocument(“”);
//防止PHP警告我们页眉、页脚是无效的标记。
@$dom->loadHTMLFile($url);
$links=array();
$images=array();
对于($i=1;$i getElementsByTagName($heading)作为$h){
foreach($h->getElementsByTagName('a')作为$link){
数组\u推送链接,数组(
“href”=>$link->getAttribute('href'),
“innerHTML”=>$link->nodeValue
));
}
foreach($h->getElementsByTagName('img')作为$img){
阵列\u推送($图像,阵列(
“src”=>$img->getAttribute('src')
));
}
}
}

简单的是缺少兄弟选择符。你可以考虑切换到具有<代码> ~的东西,你可以这样做:<代码> H2IMG,H2~IMG谢谢。这是一个非常好的方法,我必须得到所有标题和相关联的任何图像,这样才能工作,但是我还需要得到所有不是头的其他链接。基本上,我需要订购我的链接h1和图片,h2和图片-h6等…和所有其他链接和图片。我现在不知道如何得到剩余的链接,不是标题,所以我需要重新思考我的逻辑,但这肯定有帮助,谢谢你