PHP DOM html从另一个元素获取元素
问题描述:
我正在尝试为php html dom创建一些元素路径模式。PHP DOM html从另一个元素获取元素
它看起来像休闲。我可以有不同的路径,我想要一些文本。喜欢;
$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);
OUTPUT:
Array
(
[h1/span] => Array
(
[0] => span inside h1
)
)
你想与[XPath]中熟悉
(http://schlitt.info/opensource/blog/0704_xpath。 HTML)或使用支持Selector的第三方库,例如phpQuery或Zend_Dom – Gordon 2012-03-07 19:44:06
我不想为这个东西放一个大类的lib,我认为必须有一个解决方案来达到这个简单的方法:) – directory 2012-03-07 20:19:32
然后学习XPath – Gordon 2012-03-07 20:26:06