Как узнать, эквивалентны ли 2 фрагмента кода в JavaScript / PHP? - PullRequest
2 голосов
/ 27 мая 2011

У меня идет Ajaxing, и у меня есть 2 блока исходного кода. Первый:

window.lastSavedContents = "<?php echo htmlentities( $contents ); ?>";

Второй - все, что пользователь вводит в текстовый редактор. Проблема в том, что window.lastSavedContents кодируется htmlentities, тогда как второй блок - нет.

Как я могу проверить эквивалентность?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Во-первых, не используйте htmlentities, но htmlspecialchars, который кодирует только <, >, & и ". Таким образом, вы можете просто заменить эти объекты, используя

var decoded = encoded.replace(/&amp;/g, '&')
                     .replace(/&lt;/g, '<')
                     .replace(/&quot;/g, '"')
                     .replace(/&gt;/g, '>');

Если вы все еще хотите использовать htmlentities, вы можете просто создать временную div:

var div = document.createElement('div');
div.innerHTML = encoded;
var decoded = div.firstChild.nodeValue;
0 голосов
/ 27 мая 2011

Вы можете найти способ обойти сущность, кодирующую данные, или декодировать window.lastSavedContents в Javascript.Вот функция, которая поможет вам сделать это: http://phpjs.org/functions/html_entity_decode:424

...