У кого-нибудь есть хороший способ найти, содержит ли строка неправильный XHTML с помощью Javascript?Поиск искаженного XHTML с Javascript
Поскольку моя страница позволяет «пользователь» генерироваться XHTML возвращает (пользователи могут доверять) и вводит его в DOM, я хочу способ проверить, если есть незакрытые или чрезмерно закрытые теги, и кодировать их как <
и >
, чтобы он просто отображал ошибки как текст. Таким образом, все действительные xhtml все равно будут отображаться, а недопустимый будет просто текстовыми узлами, что позволит сценарию, по крайней мере, продолжить с ошибками.
Вот аналогичный метод, который я сделал, что довольно грубо. Она имеет различные цели (просто вскрышных все допустимые теги Xhtml и оставляя все остальное. Она работает рекурсивно выбирая внутренние большинство тегов и зачистки их.
stripHTML: function(html) {
var validXHTML = /<(\S+).*>(.*?)<\/\1>/i;
var validSelfClose = /<(input|img|br|hr)[^>]*\/>/gi;
html = html.replace(validSelfClose, '');
if(validXHTML.test(html)) {
var loc = html.search(validXHTML);
var str = html.match(validXHTML);
html = html.substr(0, loc) +
strings.addPunctuation(html.substr(loc, str[0].length).replace(validXHTML, '$2')) +
html.substr((loc+str[0].length), html.length);
if(validXHTML.test(html)) {
html = strings.stripHTML(html);
} else {
return html;
}
}
return html;
}
Вы можете улучшить выше, или ответ собственно вопрос.
Update
Моя идея для простого способа, по крайней мере вместить в большинстве случаев это:
закодировать все> и < не то, что закрыть или открыть ничего,
изменить все теги наименований внутри <> в нижнем регистре
работает рекурсивно , начните с самими внутренними тегами, изменить их из нижнего регистра в верхний регистр <li>something</li>
становится <LI>something</LI>
после рекурсии отделки, вырезать все другие> и <
переключить все теги в верхнем регистре назад в нижний регистр
Есть ли какие-либо проблемы, которые были немедленно предвидены, кроме того, что это займет много времени?
попробуйте также разместить код в refactormycode.com –
Одна из проблем, любая такая программа будет иметь решает, какие теги являются ошибочными те ... Рассмотрим фрагмент hi; какие теги вы хотите кодировать? – Stobor
@Strobor, я ленив, но я бы попробовал этот конкретный бит кода во множестве разных браузеров и посмотрел, что они делают. Я подозреваю, что большинство из них поймет это внутренне как привет –