|
Преобразовать строку в HTML код (обратное htmlspecialchars из php)
В переменной текст. В этом тексте ВСЕ спецсимволы из HTML заменены таким образом:
'<' = < '>' = > и другие символы заменены на свои "соответствия" в том числе. Из-за этого весь HTML код превращается в текст в то время, когда он должен быть HTML кодом. Можно ли как-то javascript'ом преобразовать HTML сущности в спецсимволы. (операция обратная php htmlspecialchars) Вот такой текст в переменной: <HTML><body>\\n <!DOCTYPE HTML PUBLIC \'-//W3C//DTD HTML 4.01 Transitional//EN\'>\\n <meta http-equiv=\'content-type\' content=\'text/html; charset=utf-8\'> <link href=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shCore.css\' rel=\'stylesheet\' type=\'text/css\'/> <link href=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shThemeDefault.css\' rel=\'stylesheet\' type=\'text/css\'/> <script src=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shCore.js\' type=\'text/javascript\'></script> <script src=\'http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shBrushCpp.js\' type=\'text/javascript\'></script> <script language=\'javascript\'> SyntaxHighlighter.all(); </script> <!----------------КОД-----------------------------> <pre class=\'brush: cpp\'> #include &lt;iostream&gt; <br /> using namespace std; int main(){ setlocale(LC_ALL,&quot;&quot;); int Height,Weight; cout&lt;&lt;&quot;Введите Ваш рост и вес:\\n&quot;; cin&gt;&gt;Height&gt;&gt;Weight; cout&lt;&lt;&quot;Ваш рост: &quot;&lt;&lt;Height&lt;&lt;endl; cout&lt;&lt;&quot;Ваш вес: &quot;&lt;&lt;Weight&lt;&lt;endl; } </pre> <!----------------КОД-----------------------------> </body></HTML> Должен предстать не в виде текста, а в виде кода HTML со своими тегами, а не сущностями вместо тегов. |
можно попробовать это - 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(/</g, '<') .replace(/>/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(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP } if (!noquotes) { string = string.replace(/"/g, '"'); } // Put this in last place to avoid escape being double-decoded string = string.replace(/&/g, '&'); return string; } |
А зачем тогда преобразуется при выводе?
|
Цитата:
|
Цитата:
|
Цитата:
Этот пример я попозже попробую. |
Цитата:
|
С помощью php я беру текст из файла. Этот текст - это HTML код, в котором описан некоторый язык программирования (в моем случае c++)/ там маленький пример. Этот HTML код должен стать HTML страницей. Проще говоря, средствами javascript я открываю новое окно, в которое вписываю этот HTML код, который с помощью php беру из файла.
Если HTML не преобразовывать в php, то часть исходного HTML затрется, а это уже приведет к тому, что в переменной javascript окажется непонятно что. Чтобы javascript проглотил этот текст, приходится экранировать символы и HTML превращать в HTML сущности, но из-за этого в открываемом окне страница выглядит не как HTML страница, а как текст. Я могу дать исходный HTML код. Если он нужен. И еще у меня такая проблема, что даже если вышеприведенный код мне поможет, он убьет часть кода, где > и некоторые символы изначально являются не HTML кодом, а HTML сущностями. (я об этом забыл вначале написать). |
В смысле исходный - это тот, который сначала редактируется, чтобы в переменную javascript попало, что надо. А потом обратная операция нужна, насколько я понял.
|
Цитата:
|
Часовой пояс GMT +3, время: 01:47. |
|