【问题标题】:insert div between content using foreach with simple html dom parser使用带有简单 html dom 解析器的 foreach 在内容之间插入 div
【发布时间】:2014-06-10 16:52:22
【问题描述】:

我正在使用 PHP 简单的 dom 解析器,说我的标记是这样的

<table class="tb">..</table>
<table>..</table>
<table>..</table>

我试过了

$banner = '<div class="ads">blablabla</div>';
foreach($html->find('tb') as $table){
    $table->outertext .= $banner;
}

但它会循环所有表格。我试过find('div[class="tb"][1]'),但它不起作用。我希望 div 在第一个和第二个表中只出现一次。

【问题讨论】:

  • 你想用 oly php 不需要 Jquery 吗?
  • @HariniSekar 只是 php
  • @kevinabelita 为什么需要放在里面?我把它放在外面,它工作了,只是它遍历了所有的桌子,我只希望横幅在第一张和第二张桌子上出现一次。

标签: php html simpledom


【解决方案1】:

首先,您尝试查找类为 tb 的 div,而您应该查找 table 元素。接下来,要使用$banner 值“附加”现有文本,您需要使用.= 运算符,这样您的表格代码就不会被删除。最后,您保存更改。代码应如下所示:

foreach($html->find('table[class=tb]') as $element){
       echo $element->src . '<br>';
       $element->outertext .= $banner;
}

$html->save();

输出将是:

<table class="tb">..</table><div class="ads">banner</div>  <table>..</table>  <table>..</table>

【讨论】:

  • 如果我不保存它会怎样?因为最后我回显了 $html
  • @user3522725 根据here,当您要将内容保存到文件中时,似乎使用了 save() ,对于您的情况,您可以不使用它。
  • 说我有 5 张桌子,我使用了你的代码,里面有 5 个横幅。这就是问题所在
  • @user3522725 你能pastebin那5张表的结构吗?
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 2012-08-28
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2017-03-29
  • 1970-01-01
相关资源
最近更新 更多