|
Преобразовать строку в 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, время: 19:14. |
|