Php DOMNode旅行

时间:2014-08-05 13:51:13

标签: php html nextsibling

我正在尝试解析HTML文档,并从标记中获取文本值,但问题是标记不包含任何特殊属性或者有一些id来定位它们。 唯一可以锚定的是 - 另一个静态文本,用作标签。

源页面代码与此

类似
 <tr>
<td>
  <span> 
    Some text to link to
  </span>
 </td>
 <td>
  <span> 
    THE text to get
  </span>
 </td>
</tr>

/*****************Parser Page Script*************************/
$file = "src/src.htm";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);

/********* Page that Processes *********/
//Pattern for regEx
$pattern = "/Some text to link to/";

$elements = $doc->getElementsByTagName('td');

if (!is_null($elements)) {
foreach ($elements as  $node){
  $text = $node->textContent;

 if(preg_match($pattern, $text, $matches)){
        echo "<pre>";
         print_r($node);
        echo "</pre>";

     }
    }
   }

如果结果为[nextSibling] =&gt;,如何获取搜索到的td的nextSibling值(省略对象值)?

1 个答案:

答案 0 :(得分:0)

可能是使用Xpath。示例xpath:/ table / tr / td / span

$file = "src/src.htm";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);


$xpath = new DOMXpath($doc);
$elements = $xpath->query('/table/tr/td/span');
if(!empty($elements))
{   
    foreach($elements as $element)
    {   
        echo $element->nodeValue;
    }
}