У меня есть пара тысяч фрагментов 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 Краткое руководство руководство, чтобы увидеть, есть ли вариант для меня, но я еще ничего не нашел.
редактировать: прошел всю справочную страницу .. много чего перепробовал, ничего не получалось. Не думайте, что это то, что я могу сделать в Tidy (поправьте меня, если я ошибаюсь ..)
У кого-нибудь есть идеи по этому поводу?
Задача ещё не решена.
Других решений пока нет …