我有一个div id喜欢从输出中删除,看起来像
<div id="ithis" class="cthis">Content here which includes other elements etc..) </div>
如何使用PHP和regex删除此div及其中的所有内容?
谢谢。
答案 0 :(得分:13)
简单的答案是你没有。您可以使用PHP的许多HTML解析器之一。正则表达式是一种操作HTML的片状且容易出错的方式。
据说你可以这样做:
$html = preg_replace('!<div\s+id="ithis"\s+class="cthis">.*?</div>!is', '', $html);
但许多事情可能会出错。例如,如果包含div:
<div id="ithis" class="cthis">Content here which <div>includes</div> other elements etc..) </div>
你最终会得到:
other elements etc..) </div>
因为正则表达式将停在第一个</div>
。并且没有什么可以用来一致地解决这个问题(使用正则表达式)。
使用解析器完成它看起来更像是这样:
$doc = new DOMDocument();
$doc->loadHTML($html);
$element = $doc->getElementById('ithis');
$element->parentNode->removeChild($element);
$html = $doc->saveHTML();
答案 1 :(得分:1)
我不了解PHP,但您可以不用任何内容替换/<id.*?<\/id[^>]*>/
。
答案 2 :(得分:0)
PHP是服务器端,输出来自服务器。你能不能输出它吗?或者你想隐藏它?如果是这样,请在样式表中说出#ithis {display:none}
。
如果字符串是从PHP中的某个函数返回的,你还没有编写并且你不想使用该代码,你必须编写一个非常困难的正则表达式来解释嵌套的div,在输出等我建议使用一些解析器(也许这个Zend Framework component)来帮助你。我已经用了几次类似的东西。虽然如果你根本不熟悉ZF,你可能想尝试其他的东西。