Кодировать HTML перед POST - PullRequest
       7

Кодировать HTML перед POST

5 голосов
/ 04 февраля 2011

У меня есть следующий скрипт, который кодирует некоторые значения, которые он получает правильно, но, похоже, не кодирует двойные кавычки.

Как правильно кодировать полное значение перед публикацией?

function htmlEncode(value){ 
    return $('<div/>').text(value).html(); 
} 

Приведенный выше скрипт дает мне это:

&lt;p&gt;Test&amp;nbsp; &lt;span style="color: #ffffff"&gt;&lt;strong&gt;&lt;span style="background-color: #ff0000"&gt;1+1+1=3&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;

Мне нужно, чтобы он дал мне это:

&lt;p&gt;Test&amp;nbsp; &lt;span style=&quot;color: #ffffff&quot;&gt;&lt;strong&gt;&lt;span style=&quot;background-color: #ff0000&quot;&gt;1+1+1=3&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;

РЕДАКТИРОВАТЬ: следующий вопрос: Кодированный HTML в базе данныхвернуться на страницу

Ответы [ 6 ]

8 голосов
/ 04 февраля 2011

Вы не должны пытаться кодировать вещи с помощью JavaScript.

Вы должны закодировать его на сервере.

Все, что можно сделать с помощью JavaScript, можно отменить.

Допустимо кодировать его в JavaScript, если вы также проверите, что оно было закодировано на сервере, но имейте в виду: JavaScript можно отключить.

5 голосов
/ 04 февраля 2011

Что Джордж говорит правду .Но если вам нужно кодировать строки на стороне клиента, я бы предложил вам использовать JavaScript encodeURIComponent () .

2 голосов
/ 24 декабря 2014

У меня была похожая проблема. Я просто использовал метод замены в javascript. Вот хорошая статья для чтения: http://www.w3schools.com/jsref/jsref_replace.asp

По сути, метод замены состоит в том, что он заменяет или заменяет найденный символ на тот, который вы указываете как символ (ы) замены.

Итак, это:

var str=' " That " ';
str = str.replace(/"/g,'&quot;');

Как только вы войдете в консоль вашего браузера, вы получите что-то вроде

&quot; That &quot;

А это:

var str=' " That " ';
str = str.replace(/"/g,'blahblahblah');

Как только вы войдете в консоль вашего браузера, вы получите что-то вроде

blahblahblah That blahblahblah
1 голос
/ 04 февраля 2011

Вы можете использовать этот модуль в js, не требуя jQuery:

htmlencode

0 голосов
/ 02 апреля 2014

Использовать escape (str) на стороне клиента

и

HttpUtility.UrlDecode (str, System.Text.Encoding.Default);на стороне сервера

у меня это сработало.

0 голосов
/ 04 февраля 2011

Вы можете повторно использовать функции из проекта php.js - htmlentities и get_html_translation_table

...