PHP DOM html从另一个元素获取元素


PHP DOM html get element from another element

我正在尝试为php-html-dom创建一些东西,以便使用元素路径模式。

它看起来像是休耕的。我可以有不同的路径来输出一些文本。喜欢

$elements = 'h1;span;';
$elements = 'div.test;h2;span';

我试图创建一个函数来处理这些插入,但我被困在部分以正确顺序设置"getElementsByTagName()"并接收的值最后一个元素,

我现在所做的;

    function convertName($html, $elements) {
        $elements = explode(';', $elements);
        $dom = new DOMDocument;
        $dom->loadHTML($html);
        $name = null;
        foreach ($elements as $element) :
            $name. = getElementsByTagName($element)->item(0)->;
            endforeach;
         $test = $dom->$name.'nodeValue';
         print_r($test); // receive value          
   }

我希望有人能给我一些意见或例子。

可能是这样的:

function convertName($html, $elements) {
   $doc = new DOMDocument();
   libxml_use_internal_errors(true);
   $doc->loadHTML($html); // loads your html
   $xpath = new DOMXPath($doc);
   $elements = explode(';', $elements);
   $elemValues = array();
   foreach ($elements as $element) {
      $nodelist = $xpath->query("//$element");
      for($i=0; $i < $nodelist->length; $i++)
         $elemValues[$element][] = $nodelist->item($i)->nodeValue;
   }
   return $elemValues;
}
// TESTING
$html = <<< EOF
 <span class="bar">Some normal Text</span>
 <input type="hidden" name="hf" value="123">
 <h1>Heading 1<span> span inside h1</span></h1>
 <div class='foo'>Some DIV</div>
 <span class="bold">Bold Text</span>
 <p/>
EOF;
$elements = 'h1;span;';
// replace all but last ; with / to get valid XPATH
$elements = preg_replace('#;(?=[^;]*;)#', '/', $elements);
// call our function
$elemValues = convertName($html, $elements);
print_r($elemValues);

输出:

Array
(
    [h1/span] => Array
        (
            [0] =>  span inside h1
        )
)