Самый быстрый способ избежать тегов HTML в качестве сущностей HTML? - PullRequest
91 голосов
/ 31 марта 2011

Я пишу расширение Chrome, которое включает в себя выполнение лота следующего задания: очистка строк, которые могут содержать теги HTML, путем преобразования <, > и& до &lt;, &gt; и &amp;, соответственно.

(Другими словами, так же, как PHP htmlspecialchars(str, ENT_NOQUOTES) - я не думаю, что есть какая-то реальная необходимость конвертировать двойныесимволы кавычки.)

Это самая быстрая функция, которую я нашел до сих пор:

function safe_tags(str) {
    return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;') ;
}

Но все равно есть большое отставание, когда мне нужно выполнить несколько тысяч строк за один раз,

Может кто-нибудь улучшить это?В основном это строки длиной от 10 до 150 символов, если это имеет значение.

(У меня была одна идея не беспокоиться о кодировании знака «больше» - будет ли с этим какая-то реальная опасность?)

Ответы [ 11 ]

0 голосов
/ 02 ноября 2014

Метод Мартина как отдельная функция с обработкой " mark ( использование в javascript ):

function escapeHTML(html) {
    var fn=function(tag) {
        var charsToReplace = {
            '&': '&amp;',
            '<': '&lt;',
            '>': '&gt;',
            '"': '&#34;'
        };
        return charsToReplace[tag] || tag;
    }
    return html.replace(/[&<>"]/g, fn);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...