Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP简单HTML Dom:获取childNodes节点值?_Php_Html_Dom_Nodevalue - Fatal编程技术网

PHP简单HTML Dom:获取childNodes节点值?

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

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 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