Экранирование строк HTML с помощью jQuery

Я использую этот .htaccess для удаления расширения .html с моего сайта url, пожалуйста, проверьте, что это правильный код:

    RewriteEngine on
RewriteBase /
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L]
578
задан Matt Fenwick 1 May 2012 в 10:47
поделиться

4 ответа

Так как Вы используете jQuery, можно просто установить элемент text свойство:

// before:
// <div class="someClass">text</div>
var someHtmlString = "<script>alert('hi!');</script>";

// set a DIV's text:
$("div.someClass").text(someHtmlString);
// after: 
// <div class="someClass">&lt;script&gt;alert('hi!');&lt;/script&gt;</div>

// get the text in a string:
var escaped = $("<div>").text(someHtmlString).html();
// value: 
// &lt;script&gt;alert('hi!');&lt;/script&gt;
423
ответ дан Aliaksandr Sushkevich 1 May 2012 в 10:47
поделиться

Если Вы выходите для HTML, существуют только три, что я могу думать, который был бы действительно необходим:

html.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");

В зависимости от Вашего варианта использования, Вы, возможно, также должны были бы сделать вещи как " к &quot;. Если бы список стал достаточно большим, я просто использовал бы массив:

var escaped = html;
var findReplace = [[/&/g, "&amp;"], [/</g, "&lt;"], [/>/g, "&gt;"], [/"/g, "&quot;"]]
for(var item in findReplace)
    escaped = escaped.replace(findReplace[item][0], findReplace[item][1]);

encodeURIComponent() только выйдет из него для URL, не для HTML.

61
ответ дан Alexander Elgin 1 May 2012 в 10:47
поделиться
$('<div/>').text('This is fun & stuff').html(); // "This is fun &amp; stuff"

Источник: http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

180
ответ дан Edward 1 May 2012 в 21:47
поделиться

ES6 один лайнер для решение от mustache.js

const escapeHTML = str => (str+'').replace(/[&<>"'`=\/]/g, s => ({'&': '&amp;','<': '&lt;','>': '&gt;','"': '&quot;',"'": '&#39;','/': '&#x2F;','`': '&#x60;','=': '&#x3D;'})[s]);
0
ответ дан 22 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: