【问题标题】:PHP echo a comma between elementsPHP 在元素之间回显逗号
【发布时间】:2014-03-19 03:47:06
【问题描述】:

我的代码从 html 表格中提取某些元素并列出它们:

foreach($html->find('tr[align=center]') as $e)
echo strip_tags($e->innertext) . '<br>';

输出如下所示:

OPEN 91212 ACCY 2001 12 Intro Financial Accounting 3.00 Zou, Y 1957 E B12 TR02:20PM - 03:35PM 01/13/14 - 04/28/14 

这是从中提取这些项目的 HTML 表格:

 <table width="100%"  border="0" cellspacing="1" cellpadding="0" bgcolor="#006699">
    <tr align="center" class="tableRow1Font">
        <td width="7%">WAITLIST</td>
        <td width="5%">91630</td>
        <td width="11%">ACCY <A HREF="http://www.gwu.edu/~bulletin/ugrad/accy.html#2001" target="_blank">2001</A>
        </td>
        <td width="5%">10</td>
        <td width="16%">Intro Financial Accounting</td>
        <td width="6%">3.00</td>
        <td width="8%"> Zou, Y</td>
        <td width="8%"><A HREF="http://www.gwu.edu/~map/building.cfm?BLDG=DUQUES" target="_blank" >DUQUES</a> 251</td>
        <td width="13%">TR<br>09:35AM - 10:50AM</td>
        <td width="14%">
            01/13/14 - 04/28/14
        </td>
        <td width="7%">

        </td>
    </tr>

如何更改我的代码以回显逗号来分隔每个元素? 我希望它看起来像这样:

OPEN, 91212, ACCY 2001, 12, Intro Financial Accounting, 3.00, Zou, Y, 1957 E B12, TR02:20PM - 03:35PM, 01/13/14 - 04/28/14 

【问题讨论】:

  • 为什么不在你添加&lt;br&gt;标签的地方加一个逗号?
  • 他可能没有控制表格的来源。而且他只是循环遍历每个 tr,但希望所有 td 元素的值都用逗号分隔

标签: php parsing dom html-table echo


【解决方案1】:
echo strip_tags($e->innertext) . ', ';

【讨论】:

  • 如果您不想在末尾有尾随逗号,请先通过连接而不是回显条目来收集字符串中的所有条目,或者使用输出缓冲。然后用substr把末尾的逗号去掉。
  • 没有。一切都在一行中返回,因为他在每个 tr 上都使用他的 for each 而不是 td
  • @ElefantPhace 不确定这是指这个答案还是我的评论,但我真的不明白你对这两种可能性中的任何一种的看法......
  • 不,@Chitown 你误解了这个问题
  • @Chitowns24 你的编辑让情况变得更糟。如果你想让一个变量向上计数,为什么要使用 foreach 呢?虽然它应该摆脱尾随的, - 我在评论中建议的解决方案更干净。
【解决方案2】:
foreach($html->find('tr[align=center]') as $e){ 
     $str .= strip_tags($e->innertext). ",";
}
$str = trim($str, ",");//delete last ","
echo $str; 

【讨论】:

  • 这只会回显最后一个&lt;tr&gt;。你可能打算写$str.=
  • 这不会改变任何东西,只是在他打印的整个字符串的末尾添加一个逗号
  • 仍然不正确,=. 语法无效。另外,您在附加之前没有在任何地方定义$str,这也行不通。
  • 你的答案还是错的。为什么不测试一下看看
【解决方案3】:

试试

$html->find('tr[align=center] td') 

而是循环遍历每个 td,并用逗号替换您的 br 标签

【讨论】:

  • 这完全解决了我的问题。但是,我有很多这样的表。这将逗号放在每个元素之间,但是我如何将逗号放在每个元素之间并在每行的末尾换行?干杯!
  • 循环两次。外循环遍历所有&lt;tr&gt;,内循环遍历所有tds在当前tr内。在内部循环中添加逗号,在外部循环的末尾(但在内部)添加 br
  • 试着弄乱它,如果你无法弄清楚,请提出另一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2015-12-20
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 2020-09-28
相关资源
最近更新 更多