【问题标题】:getting the element from the p tag从 p 标签中获取元素
【发布时间】:2016-07-24 14:45:16
【问题描述】:

如何使用 DOMDocument 从 ID 为 categories 的 p 标签内的 <p> 标签中获取内容?

代码如下:

<?php
   ini_set('max_execution_time', 300);
   //error_reporting(0);
   $errmsg_arr = array();
   $errflag = false;

   function getState($string)
   {
     $ex = explode(" ",$string."  ");
     return $ex[1];
   }
   $xml = "";
   $xml .= '<?xml version="1.0" encoding="UTF-8" ?>';
   $xml .= '
     <tv generator-info-name="www.mysite.com/xmltv">';
   $baseUrl = file_get_contents('www.myscript.com/get-listing.php');

   $domdoc = new DOMDocument();
   $domdoc->strictErrorChecking = false;
   $domdoc->recover=true;
   $domdoc->loadHTML($baseUrl);
?>

例如,我的 HTML 可能如下所示:

<p id='categories'>Sports</p>

我正在尝试提取以下文本:

Sports

所以当我尝试这个时:

$p = $domdoc->getElementById('categories')->getElementsByTagName('p')->item(0);

回声 $p;

它不会从 id categories 中提取内容。

我该怎么做?

【问题讨论】:

  • 附带说明,p 标签 read 内不能有 p 标签。在源视图中,firefox 以红色突出显示类似&lt;p id="categories"&gt; &lt;p&gt;Sports&lt;/p&gt; &lt;/p&gt; 的问题
  • 我更新了我的答案...

标签: php html xpath domdocument


【解决方案1】:

仅对于该 html,您可以这样做:

echo $domdoc->getElementById('categories')->nodeValue;

输出:

运动

看到它在行动here


由于您在&lt;p&gt; 标签内添加了can't have &lt;p&gt; 标签,DOMDocument kind 对此非常着迷。根据具体情况,您可以采取如下解决方法:

$baseUrl = '
<p id="categories">
    <p>Sports</p>
</p>';

$baseUrl = str_replace('<p', '<div', $baseUrl);
$baseUrl = str_replace('<p>', '<div>', $baseUrl);
$baseUrl = str_replace('</p>', '</div>', $baseUrl);

$domdoc = new DOMDocument();
$domdoc->loadHTML($baseUrl);

echo $domdoc->getElementById('categories')->getElementsByTagName('div')->item(0)->nodeValue;

输出和之前一样。

【讨论】:

  • 如果您提供有关给定 html 的更多详细信息,我们可以更改此代码以符合预期...
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 2020-02-18
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多