Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2015, 15:28
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Преобразовать строку в HTML код (обратное htmlspecialchars из php)
В переменной текст. В этом тексте ВСЕ спецсимволы из HTML заменены таким образом:
'<' = &lt;
'>' = &gt;
и другие символы заменены на свои "соответствия" в том числе.

Из-за этого весь HTML код превращается в текст в то время, когда он должен быть HTML кодом.

Можно ли как-то javascript'ом преобразовать HTML сущности в спецсимволы. (операция обратная php htmlspecialchars)

Вот такой текст в переменной:
&lt;HTML&gt;&lt;body&gt;\\n
   &lt;!DOCTYPE HTML PUBLIC \'-//W3C//DTD HTML 4.01 Transitional//EN\'&gt;\\n
&lt;meta http-equiv=\'content-type\' content=\'text/html; charset=utf-8\'&gt;

    &lt;link href=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shCore.css\' rel=\'stylesheet\' type=\'text/css\'/&gt;
	&lt;link href=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shThemeDefault.css\' rel=\'stylesheet\' type=\'text/css\'/&gt;
	&lt;script src=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shCore.js\' type=\'text/javascript\'&gt;&lt;/script&gt;
	&lt;script src=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shBrushCpp.js\' type=\'text/javascript\'&gt;&lt;/script&gt;
	&lt;script language=\'javascript\'&gt;
	SyntaxHighlighter.all();
	&lt;/script&gt;



 &lt;!----------------КОД-----------------------------&gt;
&lt;pre class=\'brush: cpp\'&gt;
#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;

int main(){
    setlocale(LC_ALL,&amp;quot;&amp;quot;);
    int Height,Weight;

    cout&amp;lt;&amp;lt;&amp;quot;Введите Ваш рост и вес:\\n&amp;quot;;
    cin&amp;gt;&amp;gt;Height&amp;gt;&amp;gt;Weight;

    cout&amp;lt;&amp;lt;&amp;quot;Ваш рост: &amp;quot;&amp;lt;&amp;lt;Height&amp;lt;&amp;lt;endl;
    cout&amp;lt;&amp;lt;&amp;quot;Ваш вес: &amp;quot;&amp;lt;&amp;lt;Weight&amp;lt;&amp;lt;endl;


}
&lt;/pre&gt;
 &lt;!----------------КОД-----------------------------&gt;
 &lt;/body&gt;&lt;/HTML&gt;

Должен предстать не в виде текста, а в виде кода HTML со своими тегами, а не сущностями вместо тегов.
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2015, 15:41
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

можно попробовать это - http://phpjs.org/functions/htmlspecialchars_decode/
function htmlspecialchars_decode(string, quote_style) {
  var optTemp = 0,
    i = 0,
    noquotes = false;
  if (typeof quote_style === 'undefined') {
    quote_style = 2;
  }
  string = string.toString()
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>');
  var OPTS = {
    'ENT_NOQUOTES': 0,
    'ENT_HTML_QUOTE_SINGLE': 1,
    'ENT_HTML_QUOTE_DOUBLE': 2,
    'ENT_COMPAT': 2,
    'ENT_QUOTES': 3,
    'ENT_IGNORE': 4
  };
  if (quote_style === 0) {
    noquotes = true;
  }
  if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags
    quote_style = [].concat(quote_style);
    for (i = 0; i < quote_style.length; i++) {
      // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
      if (OPTS[quote_style[i]] === 0) {
        noquotes = true;
      } else if (OPTS[quote_style[i]]) {
        optTemp = optTemp | OPTS[quote_style[i]];
      }
    }
    quote_style = optTemp;
  }
  if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
    string = string.replace(/&#0*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should
    // string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be useful here, but not a part of PHP
  }
  if (!noquotes) {
    string = string.replace(/&quot;/g, '"');
  }
  // Put this in last place to avoid escape being double-decoded
  string = string.replace(/&amp;/g, '&');

  return string;
}

Последний раз редактировалось KosBeg, 22.08.2015 в 15:45.
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2015, 15:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А зачем тогда преобразуется при выводе?
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2015, 16:14
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Сообщение от laimas Посмотреть сообщение
А зачем тогда преобразуется при выводе?
Это мне вопрос?
Ответить с цитированием
  #5 (permalink)  
Старый 22.08.2015, 16:25
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

Сообщение от daslex
Это мне вопрос?
наверное к вам)
Ответить с цитированием
  #6 (permalink)  
Старый 22.08.2015, 16:25
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Сообщение от KosBeg
quote_style
Это что за параметр?

Этот пример я попозже попробую.
Ответить с цитированием
  #7 (permalink)  
Старый 22.08.2015, 16:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от daslex
Это мне вопрос?
Ну а кому же еще. Зачем сервер преобразует, если на клиенте приходится делать обратное?
Ответить с цитированием
  #8 (permalink)  
Старый 22.08.2015, 16:34
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

С помощью php я беру текст из файла. Этот текст - это HTML код, в котором описан некоторый язык программирования (в моем случае c++)/ там маленький пример. Этот HTML код должен стать HTML страницей. Проще говоря, средствами javascript я открываю новое окно, в которое вписываю этот HTML код, который с помощью php беру из файла.
Если HTML не преобразовывать в php, то часть исходного HTML затрется, а это уже приведет к тому, что в переменной javascript окажется непонятно что. Чтобы javascript проглотил этот текст, приходится экранировать символы и HTML превращать в HTML сущности, но из-за этого в открываемом окне страница выглядит не как HTML страница, а как текст.
Я могу дать исходный HTML код. Если он нужен.
И еще у меня такая проблема, что даже если вышеприведенный код мне поможет, он убьет часть кода, где &gt; и некоторые символы изначально являются не HTML кодом, а HTML сущностями. (я об этом забыл вначале написать).
Ответить с цитированием
  #9 (permalink)  
Старый 22.08.2015, 16:36
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

В смысле исходный - это тот, который сначала редактируется, чтобы в переменную javascript попало, что надо. А потом обратная операция нужна, насколько я понял.
Ответить с цитированием
  #10 (permalink)  
Старый 22.08.2015, 16:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от daslex
Если HTML не преобразовывать в php, то часть исходного HTML затрется,
Это значит не удачно описывается - описание, это описание, а если что-то должно исполняться, то это уже исполняемый пример в описании.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Заменить символы в строке, затем преобразовать строку в html majahead jQuery 2 03.03.2011 16:52
В зависимости от значения флажка выводить разный php код ZusulZoid Элементы интерфейса 2 06.09.2010 21:20
JavaScript Html + PHP oleh12 Я не знаю javascript 3 07.06.2009 15:37
как узнать html код документа, подгруженного в iframe alexKniaz Events/DOM/Window 7 03.12.2008 12:37