如何在PHP中删除字符串中的第n个html元素

时间:2011-02-01 09:38:11

标签: php html-table

我有一个有5列的大桌子,我需要删除第4和第5个。

示例:

<td><a href="http://sk.wikipedia.org/wiki/%C3%81belov%C3%A1" title="Ábelová">Ábelová</a></td>
<td><a href="http://sk.wikipedia.org/wiki/Okres_Lu%C4%8Denec" title="Okres Lučenec">Lučenec</a></td>
<td><a href="http://sk.wikipedia.org/wiki/Banskobystrick%C3%BD_kraj" title="Banskobystrický kraj">Banskobystrický kraj</a></td>
<td></td>
<td>Ábelfalva</td>

到此:

<td><a href="http://sk.wikipedia.org/wiki/%C3%81belov%C3%A1" title="Ábelová">Ábelová</a></td>
<td><a href="http://sk.wikipedia.org/wiki/Okres_Lu%C4%8Denec" title="Okres Lučenec">Lučenec</a></td>
<td><a href="http://sk.wikipedia.org/wiki/Banskobystrick%C3%BD_kraj" title="Banskobystrický kraj">Banskobystrický kraj</a></td>

在每一行。

4 个答案:

答案 0 :(得分:1)

使用PHP's DOM extension

中建议的任何DOM解析器

并使用类似

的XPath
/html/body/drill/down/to/your/table/tr/td[position() = 4 or position() = 5]

如何从DOMDocument删除节点之前已经无数次被回答过。请参阅my previous answers on how to do that with DOM部分内容或使用search function

答案 1 :(得分:0)

preg_replace可以是一个解决方案,您也可以将文件加载到SimpleXML对象中,然后使用带计数器的简单循环,并在tr中显示非第4和第5的所有td。 你也可以使用preg_split,但这很难。 所以SimpleXML是IMO的最佳方式。祝你好运

答案 2 :(得分:-1)

使用preg_replace的模式与td匹配,但不包含a,并替换为空字符串。或DOM扩展名。

答案 3 :(得分:-1)

你确实可以使用preg_replace,但我建议使用匹配4和5的正则表达式。&lt; td&gt;。*&lt; / td&gt;子。一个不太优雅(但更简单,如果你不知道正则表达式)解决方案多次使用strpos,使用一个结果作为下一个的偏移量。