doulianglou0898 2013-02-03 21:51
浏览 78
已采纳

如何使用XPath获取这些值

HTML

<table id='dg' border='0'  class="Table">
  <tr>
    <td class='text'>id.</td>
    <td class='text'>file</td>
    <td class='text'>alt</td>
  </tr>
  <tr>
    <td class='text'><input name='somename[]' type='hidden' value='1234'>
      1</td>
    <td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile.jpg');" ><img src='cms_thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
    <td class='text'><input type='text' name='title[]' value='Value 1'></td>
  </tr>
  <tr>
    <td class='text'><input name='somename[]2' type='hidden' value='2345'>
      2</td>
    <td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile2.jpg');" ><img src='thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
    <td class='text'><input type='text' name='title[]' value='Value 2'></td>
  </tr>
</table>

OBJECTIVE

Need to get img src filename and get value of the input field which have name=title[]

WHAT I HAVE SO FAR

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

foreach ($dom->getElementsByTagName('tr') as $node) { 
    $img = $xpath->query('//img')->item(0); 
    $img = str_replace("\'","",$img->getAttribute('src'));
    $img = str_replace("cms_thumb.php?imgsrc=","",$img);
    echo $img.'<br>';
}

$img contains just first image and not other

  • 写回答

2条回答 默认 最新

  • dongshi4078 2013-02-03 22:19
    关注

    Try:

    $html = <<<HTML
    <table id='dg' border='0'  class="Table">
      <tr>
        <td class='text'>id.</td>
        <td class='text'>file</td>
        <td class='text'>alt</td>
      </tr>
      <tr>
        <td class='text'><input name='somename[]' type='hidden' value='1234'>
          1</td>
        <td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile.jpg');" ><img src='cms_thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
        <td class='text'><input type='text' name='title[]' value='Value 1'></td>
      </tr>
      <tr>
        <td class='text'><input name='somename[]2' type='hidden' value='2345'>
          2</td>
        <td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile2.jpg');" ><img src='thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
        <td class='text'><input type='text' name='title[]' value='Value 2'></td>
      </tr>
    </table>
    HTML;
    
    
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    
    
    foreach($doc->getElementsByTagName("td") as $td){
        foreach($td->getElementsByTagName("img") as $img){
            $arr_img[] = array(
                "img" => $img->getAttribute("src"),
            );
        }
        foreach($td->getElementsByTagName("input") as $name){
            if ($name->getAttribute("name")==="title[]"){
                $arr_value[] = array(
                    "value" => $name->getAttribute("value")
                );
            }
        }
    }
    
    var_dump($arr_img); // In this array will be img src's
    var_dump($arr_value); // In this array will be values of input elements which name equal to title[]
    

    var_dump Outputs will be =>

    array(2) {
      [0]=>
      array(1) {
        ["img"]=>
        string(34) "cms_thumb.php?imgsrc=somefile2.jpg"
      }
      [1]=>
      array(1) {
        ["img"]=>
        string(30) "thumb.php?imgsrc=somefile2.jpg"
      }
    }
    
    array(2) {
      [0]=>
      array(1) {
        ["value"]=>
        string(7) "Value 1"
      }
      [1]=>
      array(1) {
        ["value"]=>
        string(7) "Value 2"
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?