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

时间:2012-03-07 19:39:01

标签: php dom

我正在尝试为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          
   }

我希望有人能给我一些意见或建议。

1 个答案:

答案 0 :(得分:1)

可能是这样的:

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
        )

)