【问题标题】:Can't find <p> in div id=footer在 div id=footer 中找不到 <p>
【发布时间】:2011-02-23 18:29:25
【问题描述】:

与我之前的帖子相关的一个问题,关于Simple HTML DOM Parser。 这是我的 html 代码:

<div id="header">
<h1>Hello World!</h1>
</div>
<div id="container">
 <div id="content">
    <p> </p>
    </div>
</div>

<div id="footer">
<p>LINK HERE</p>
</div>

我想在页脚的&lt;p&gt; 上插入一个链接。我可以插入一个链接,但问题是,如果在 div 页脚的&lt;p&gt; 之前还有另一个&lt;p&gt;,链接将插入到&lt;p&gt; 在 html 代码中。就像它无法识别或无法检测到它应该只在 div id=footer 中搜索,而不是整个 html 代码。

这是我得到的:

foreach($html->find('div#footer') as $footer) 
   {
    foreach($footer->find('p') as $p) 
   {
  $footerInnerText = $p->find('p', 0)->innertext;
  $theLink = '<a href="index.php" title="" rel="home">'. $footerInnerText. '</a>';
  $html->find('p', 0)->innertext = "\n" .$theLink."\n";
  }

我也试过这个:

$e = $html->find('div#footer', 0)->find('p', 0);

我在这里缺少什么?

【问题讨论】:

  • 您的问题似乎缺少部分内容。我不明白你在问什么。您想在哪里插入链接? “我想在页脚上插入一个链接”,这是什么意思?
  • 如何使用正则表达式和 preg_replace。您的正则表达式类似于: "/(div id=\"footer\">).*(

    ).*(

    ).*(
    )/"
  • @Flying Swissman: NO
  • 我无法使用正则表达式解析 html
  • @BoltClock 是的,它不应该用于解析一段随机的 html,但看到这个例子,我认为它是非常简单的一次性 HTML。我的反应是仓促。
  • 标签: php html parsing dom


    【解决方案1】:

    我发现 HTML 中的节点有点时髦。我已经看到一些空白节点等问题。例如,在 HTML 中,空白“”将解析为空,因为其中没有任何实际文本。

    &amp;nbsp; 是空格所需的代码。

    我认为问题可能是由于 P 的 innerHTML 被空白,因此不存在。您是否尝试过将任何值放入其中,只是随机测试线之类的?

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2021-07-23
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多