PHP简单HTML Dom:获取childNodes节点值?
a、 php: 但是我想在PHP(简单HTML Dom)中获得nodeValue;下面是另一个PHP页面(b.PHP)中的代码片段:PHP简单HTML Dom:获取childNodes节点值?,php,html,dom,nodevalue,Php,Html,Dom,Nodevalue,a、 php: 但是我想在PHP(简单HTML Dom)中获得nodeValue;下面是另一个PHP页面(b.PHP)中的代码片段: 我使用了textContent,但它只提取第1点下的内容子代。这不是我想要的。我只想要“第一点”。 感谢您的帮助 你可能在找这个 <?php include('simple_html_dom.php'); $html = file_get_html('http://lifelearning.net63.net/a.php'); // stuck he
我使用了textContent,但它只提取第1点下的内容子代。这不是我想要的。我只想要“第一点”。
感谢您的帮助 你可能在找这个
<?php
include('simple_html_dom.php');
$html = file_get_html('http://lifelearning.net63.net/a.php');
// stuck here:
echo $html->getElementsByTagName('ul',0)->getElementsByTagName('li',0)->nodeValue;
//
?>
将输出:-->点1
试试这个:
<?php $str2 = ' <ul id="ul1"> ' ;?>
<?php $str2 .= '<li id="pt1"><div>Point 1</div> ' ;?>
<?php $str2 .= ' <ul id="ul2"> ' ; ?>
<?php $str2 .= ' <li id="pt11">Point 1.1</li>' ; ?>
<?php $str2 .= ' <li id="pt12">Point 1.2</li>' ; ?>
<?php $str2 .= ' <pre class="CodeDisplay">' ; ?>
<?php $str2 .= ' some codes' ; ?>
<?php $str2 .= ' </pre>' ; ?>
<?php $str2 .= ' <li id="ref">Reference: <a href="link.html" target="_blank">link</a></li>' ; ?>
<?php $str2 .= ' </ul>' ; ?>
<?php $str2 .= ' </li> ' ; ?>
<?php $str2 .= ' </ul>' ; ?>
<?php
function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
$txt = getTextBetweenTags($str2, "div");
echo $txt;
?>
will output : --> Point 1
在其他在线用户的帮助下,建议使用更简单的解决方案:
<?php
include('simple_html_dom.php');
$html = file_get_html('http://lifelearning.net63.net/a.php');
echo $html->find('li[id=pt1] li', 0)->innertext;
我学到的是
首先,在我的例子中不需要任何外部库,DOMDocument负责获取网页的htmldom
其次,使用item()和childNodes。非常像JS中的内容:
$html = new DOMDocument();
$html->loadHTMLFile('http://lifelearning.net63.net/a.php');
echo $html->getElementsByTagName('li')->item(0)->childNodes->item(0)->textContent; // returns "Point 1"
但感谢您的回复。OP已经在使用SimpleHTMLDom了。[在此处插入“Regex解析HTML是错误的”注释]这是一个容易出错的建议。Regex不知道。谢谢你的回复。但它实际上返回的是“第1.1点”,而不是“第1点”。坦率地说,您应该接受自己的答案,因为不推荐使用正则表达式解决方案。
<?php
include('simple_html_dom.php');
$html = file_get_html('http://lifelearning.net63.net/a.php');
echo $html->find('li[id=pt1] li', 0)->innertext;
$html = new DOMDocument();
$html->loadHTMLFile('http://lifelearning.net63.net/a.php');
echo $html->getElementsByTagName('li')->item(0)->childNodes->item(0)->textContent; // returns "Point 1"
document.getElementsByTagName("li")[0].childNodes[0].nodeValue