Если непонятно. Я опишу задачу в более полной форме. Я сразу могу сказать, что javascript я совсем не знаю, поэтому я не могу оценить насколько трудна эта задача. Но решение для меня очень желательно.
Такое ощущение, что мы как в разных странах живем и через переводчик общаемся' ) |
Цитата:
Вот смотрите. Есть файл. В файле обычный HTML код. Вот он этот код. <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 <iostream> <br /> using namespace std; int main(){ setlocale(LC_ALL,""); int Height,Weight; cout<<"Введите Ваш рост и вес:\n"; cin>>Height>>Weight; cout<<"Ваш рост: "<<Height<<endl; cout<<"Ваш вес: "<<Weight<<endl; } </pre> <!----------------КОД-----------------------------> </body></HTML> Файл с этим кодом хранится на сервере, следовательно, чтобы его получить, я использую php, а из php уже отдаю в javascript. Если я не экранирую символы и не преобразую HTML в HTML сущности, то этот код в итог ломается и уже когда выполняется javascript у меня нефига не работает. А если я преобразую, то я на выходе получаю вот такой HTML код <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 кода, а мне нужно, чтобы это получилась страничка с исходным HTML кодом. (тот, что выше).При этом должна сработать подсветка кода. |
В смысле, я при некотором действии пользователя открываю окно, в которое должен вписаться изначальный текст, взятый с файла, который хранится на сервере'
|
<HTML><body>
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <meta http-equiv='content-type' content='text/html; charset=utf-8'> ...... Это html-код страницы. Зачем его преобразовывать? using namespace std; int main(){ setlocale(LC_ALL,""); int Height,Weight; cout<<"Введите Ваш рост и вес:\n"; cin>>Height>>Weight; cout<<"Ваш вес: "<<Weight<<endl; ..... Это описание кода и необходимое уже преобразовано в html-сущности. Зачем к этому раз применять ко всему содержимому htmlspecialchars? |
Цитата:
То, что внутри комментариев <!--Код--> к HTML коду отношения не имеет. Это изначально HTML сущности, это изначально угловые скобки, кавычки и другие элементы текста, но это так только между комментариями <!--Код-->/ Хотя даже в нем есть элементы, которые преобразованы в HTML сущности... это плохо. _________________ Применять затем, что без применения при вставке переменной php в переменную javascript, без подобной редактуры текста у меня ВСЁ, абсолютно ВСЁ не работает. |
Вы понимаете назначение функции htmlspecialchars? Думаю что да.
Остается понять кто автор данных описаний - если вы, то неужели трудно определиться что должно на странице быть описанием, а что его представлять? Если не вы, то почему разрешается такой "винегрет", а не храниться описание отдельно, к которому только при выводе нужно применять htmlspecialchars? |
Я знаю что она делает и зачем она нужна.
Терминология "описаний" мне непонятна. Открытое на клиенте окно с вписанным в него текстом должно стать HTML страницей, той самой HTML страницей, которая хранится на сервере. |
Вставляйте в чем проблема? Зачем вы ее пропускаете через htmlspecialchars, ведь код описания уже преобразован?
|
Вот текст исходной страницы.
<?php $arr[] = str_replace('</script>','</s" + "cript>',htmlspecialchars(addslashes(file_get_contents("MyFiles/MyFile.php")))); ?> <script type='text/javascript' > function MyFunc(S){ var NewWin=window.open('','','...'); NewWin.document.write(S); } </script> <div id="id2" > <b>Кликни меня</b><br /> <script type='text/javascript'> document.getElementById("id2").onclick = MyFunc.bind(null,<?php echo json_encode($arr[0]); ?>); </script> </div> С помощью php я записываю текст из файла в ячейку массива. Т.к. тупо записать без экранирования+htmlspecialchars у меня не вышло, мне подсказали использовать экранирование и htmlspecialchars. Дальше при клике по элементу <div>, должно открыться окно, в которое должен вписаться текст из файла, вписаться он должен как HTML код. Если все правильно, то пользователь, кликнувший по <div>, должен получить открытое окно, которое будет чем-то типа зеркального отражения файла с сервера, даже не файла, а полноценной HTML странички. Т.е. это такая вот передача текстовых данных с сервера в открываемое окно у клиента. |
Проблема в том, что если не преобразовывать HTML код в HTML сущности, то при передаче текстовых данных в массив возникают непонятные мне проблемы. А если преобразовывать, то я получаю не отражение HTML страницы, а отражение ее кода.
|
Часовой пояс GMT +3, время: 11:27. |