我有几千个html块我想用php批量编辑。
它们所处的HTML格式使事情变得复杂如下:
<table>
<table>
</table>
PHP Tidy似乎是一个很好的解决方案。
我正在尝试像
这样的东西$tidy = new Tidy();
$tidy_config = array(
'clean' => true,
'output-html' => true,
'show-body-only' => true,
'wrap' => 0,
'drop-proprietary-attributes' => true,
'repeated-attributes' => 'keep-first'
);
$tidy = tidy_parse_string($htmlstring, $tidy_config, 'UTF8');
$tidy->cleanRepair();
echo $tidy;
我也遇到过这个功能
function closetags($html) {
preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
$openedtags = $result[1];
preg_match_all('#</([a-z]+)>#iU', $html, $result);
$closedtags = $result[1];
$len_opened = count($openedtags);
if (count($closedtags) == $len_opened) {
return $html;
}
$openedtags = array_reverse($openedtags);
for ($i=0; $i < $len_opened; $i++) {
if (!in_array($openedtags[$i], $closedtags)) {
$html .= '</'.$openedtags[$i].'>';
} else {
unset($closedtags[array_search($openedtags[$i], $closedtags)]);
}
}
return $html;
}
两者基本上都是用这些HTML块返回相同的东西
<table>
<table>
</table>
</table>
所以他们正在关闭它,但是..格式化这些html块的奇怪方式,像这个输出一样重叠表格会导致一些重大问题。
我需要在打开新标签之前关闭标签..这意味着输出:
<table>
</table>
<table>
</table>
我目前正在搜索Tidy Quick Reference手册,看看我是否有选项,但我还没有找到任何内容。
编辑:浏览了整个参考页面..尝试过很多东西,没什么用。不要以为我能在Tidy做的事情(如果我错了就纠正我......)
任何人对此都有任何想法吗?