[PHP] Восстановление некорректного HTML
Составляешь список ключевых слов (рекомендованных W3C а потом расставляешь по бокам от них внутри тегов кавычки.
Не катит.
Как вцикле добавлять в энное место строки символ, ведь при добавлении строка увеличивается в размере, а ее длина используется в условии цикла?
Ну или после знака равенства количество слоф до следующего знака равенства минус 1 выделяеш в кавычки.
иди с конца
плохо
Чем же?
удаляй сначала все кавычки, а потом внутри тегов ищи допустимые слова (имена тегов, их свойства и если после такого слова есть = - ставь после него кавычку, и перед следующим допустимым словом и пробелом перед ним тоже кавычку... так решиш вопрос пробелов...
и нех это в циклах гонять, ботай регекспы, которые работают с массивами замены...
<td align="right valign=middle" bgcolor="red" class=ttt>на
<td align="right" valign="middle" bgcolor="red" class="ttt">Можешь объяснить зачем? Думаю, никакой браузер не пытается такое делать. То есть данный код для браузера аналогичен такому:
<td bgcolor="red" class="ttt">и это правильно.
Нет, меня интересует не то, как это будет правильно для браузера, а как это будет правильно для дальнейшего распарсивания полученного хтмл-а.
Типа, для массового XSS+DoS эксплойтинга как раз такие парсеры и требуются. Но вот почему на PHP-хз
<td bgcolor="red" class="ttt">
Оставить комментарий
walder
Пример:С помощью curl получаю некую страницу, которую надо распарсить.
В её тексте встречается такое:
<td align="right valign=middle" bgcolor="red" class=ttt>
Т.е. кавычки могут стоять, могут не стоять, а могут стоять частично.
Как лучше восстановить текст (расставить там, гд неадо кавычки написать свою функцию или preg_replace использовать?
Пытался реализовать с помощью последнего - не получилось.
Какие есть соображения на этот счёт?