在PHP中打开新标记之前关闭HTML标记

时间:2017-05-05 00:13:54

标签: php html tidy

我有几千个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做的事情(如果我错了就纠正我......)

任何人对此都有任何想法吗?

0 个答案:

没有答案