Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразовать строку в HTML код (обратное htmlspecialchars из php) (https://javascript.ru/forum/misc/57836-preobrazovat-stroku-v-html-kod-obratnoe-htmlspecialchars-iz-php.html)

daslex 22.08.2015 15:28

Преобразовать строку в 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 со своими тегами, а не сущностями вместо тегов.

KosBeg 22.08.2015 15:41

можно попробовать это - 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;
}

laimas 22.08.2015 15:42

А зачем тогда преобразуется при выводе?

daslex 22.08.2015 16:14

Цитата:

Сообщение от laimas (Сообщение 385141)
А зачем тогда преобразуется при выводе?

Это мне вопрос?

KosBeg 22.08.2015 16:25

Цитата:

Сообщение от daslex
Это мне вопрос?

наверное к вам)

daslex 22.08.2015 16:25

Цитата:

Сообщение от KosBeg
quote_style

Это что за параметр?

Этот пример я попозже попробую.

laimas 22.08.2015 16:31

Цитата:

Сообщение от daslex
Это мне вопрос?

Ну а кому же еще. Зачем сервер преобразует, если на клиенте приходится делать обратное?

daslex 22.08.2015 16:34

С помощью php я беру текст из файла. Этот текст - это HTML код, в котором описан некоторый язык программирования (в моем случае c++)/ там маленький пример. Этот HTML код должен стать HTML страницей. Проще говоря, средствами javascript я открываю новое окно, в которое вписываю этот HTML код, который с помощью php беру из файла.
Если HTML не преобразовывать в php, то часть исходного HTML затрется, а это уже приведет к тому, что в переменной javascript окажется непонятно что. Чтобы javascript проглотил этот текст, приходится экранировать символы и HTML превращать в HTML сущности, но из-за этого в открываемом окне страница выглядит не как HTML страница, а как текст.
Я могу дать исходный HTML код. Если он нужен.
И еще у меня такая проблема, что даже если вышеприведенный код мне поможет, он убьет часть кода, где &gt; и некоторые символы изначально являются не HTML кодом, а HTML сущностями. (я об этом забыл вначале написать).

daslex 22.08.2015 16:36

В смысле исходный - это тот, который сначала редактируется, чтобы в переменную javascript попало, что надо. А потом обратная операция нужна, насколько я понял.

laimas 22.08.2015 16:40

Цитата:

Сообщение от daslex
Если HTML не преобразовывать в php, то часть исходного HTML затрется,

Это значит не удачно описывается - описание, это описание, а если что-то должно исполняться, то это уже исполняемый пример в описании.

daslex 22.08.2015 16:41

Если непонятно. Я опишу задачу в более полной форме. Я сразу могу сказать, что javascript я совсем не знаю, поэтому я не могу оценить насколько трудна эта задача. Но решение для меня очень желательно.
Такое ощущение, что мы как в разных странах живем и через переводчик общаемся' )

daslex 22.08.2015 16:57

Цитата:

Сообщение от laimas
Это значит не удачно описывается - описание, это описание, а если что-то должно исполняться, то это уже исполняемый пример в описании.

Я Вас вообще не понял.

Вот смотрите. Есть файл. В файле обычный 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>

Файл с этим кодом хранится на сервере, следовательно, чтобы его получить, я использую php, а из php уже отдаю в javascript. Если я не экранирую символы и не преобразую HTML в HTML сущности, то этот код в итог ломается и уже когда выполняется javascript у меня нефига не работает. А если я преобразую, то я на выходе получаю вот такой HTML код
&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 кода, а мне нужно, чтобы это получилась страничка с исходным HTML кодом. (тот, что выше).При этом должна сработать подсветка кода.

daslex 22.08.2015 16:59

В смысле, я при некотором действии пользователя открываю окно, в которое должен вписаться изначальный текст, взятый с файла, который хранится на сервере'

laimas 22.08.2015 17:34

<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,&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;Weight&lt;&lt;endl;

.....

Это описание кода и необходимое уже преобразовано в html-сущности. Зачем к этому раз применять ко всему содержимому htmlspecialchars?

daslex 22.08.2015 17:44

Цитата:

Сообщение от laimas (Сообщение 385160)
<HTML><body>
Это описание кода и необходимое уже преобразовано в html-сущности. Зачем к этому раз применять ко всему содержимому htmlspecialchars?

Надо не применять еще раз, надо убрать те применения, которые были сделаны. Вернуть в то состояние как оно было.

То, что внутри комментариев <!--Код--> к HTML коду отношения не имеет. Это изначально HTML сущности, это изначально угловые скобки, кавычки и другие элементы текста, но это так только между комментариями <!--Код-->/ Хотя даже в нем есть элементы, которые преобразованы в HTML сущности... это плохо.
_________________

Применять затем, что без применения при вставке переменной php в переменную javascript, без подобной редактуры текста у меня ВСЁ, абсолютно ВСЁ не работает.

laimas 22.08.2015 18:04

Вы понимаете назначение функции htmlspecialchars? Думаю что да.
Остается понять кто автор данных описаний - если вы, то неужели трудно определиться что должно на странице быть описанием, а что его представлять? Если не вы, то почему разрешается такой "винегрет", а не храниться описание отдельно, к которому только при выводе нужно применять htmlspecialchars?

daslex 22.08.2015 18:08

Я знаю что она делает и зачем она нужна.
Терминология "описаний" мне непонятна.
Открытое на клиенте окно с вписанным в него текстом должно стать HTML страницей, той самой HTML страницей, которая хранится на сервере.

laimas 22.08.2015 18:18

Вставляйте в чем проблема? Зачем вы ее пропускаете через htmlspecialchars, ведь код описания уже преобразован?

daslex 22.08.2015 18:20

Вот текст исходной страницы.
<?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 странички. Т.е. это такая вот передача текстовых данных с сервера в открываемое окно у клиента.

daslex 22.08.2015 18:21

Проблема в том, что если не преобразовывать HTML код в HTML сущности, то при передаче текстовых данных в массив возникают непонятные мне проблемы. А если преобразовывать, то я получаю не отражение HTML страницы, а отражение ее кода.

laimas 22.08.2015 18:25

Цитата:

Сообщение от daslex
Проблема в том, что если не преобразовывать HTML код в HTML сущности, то при передаче текстовых данных в массив возникают непонятные мне проблемы.

В какой массив и зачем? Речь ведь идет о странице, код которой представлен, и которую нужно всего лишь навсего вывести в новом окне.

daslex 22.08.2015 18:26

Много файлов, в каждом файле свой код. Окно открывается одно. Т.к. файлов много, то удобно записывать их в массив, а потом передавать в открываемое окно.
В результате, в зависимости от выбранного пользователем <div> элемента, в открытое окно должен вписаться соответствующий этому <div> текст, который в свою очередь и хранится на сервере.

Массив или переменная не одно ли и то же?. Массив всего лишь хранит много переменных, но его переменная, это обычная переменная, ничем от других переменных не отличающаяся.

laimas 22.08.2015 18:28

Нужно отделять мух от котлет, иначе у вас слишком много бесполезной работы.
1) Кто хозяин этих описаний?
2) Ваш сайт динамический или статический?

KosBeg 22.08.2015 18:36

а загрузить аяксом нужную страницу не пробовали?

daslex 22.08.2015 18:40

Задача моя. Ставил себе её я сам. Решение мне действительно нужно.
В Javascript я ничего не знаю. Я в этом признался честно и повторяю сейчас.
Кусочек с php писал я. C экранированием и html сущностями мне подсказали.

javascript под открытия окна писал я. Искал как делать много, долго и упорно. Настоящего автора сказать не могу. Я не знаю кто это был, я использовал его труд. То же самое для клика по <div>, автора сказать не могу, но выискал я своими силами.
HTML код написан мной.

Подход к решению выбран мной с некоторыми корректировками другими людьми.
__________________

И кто здесь автор описаний? Вроде не я, а вроде и я с некоторой помощью других людей.

__________________

daslex 22.08.2015 18:42

Я не знаю Аякса. Если в javascript я хотя бы document.write знаю, то там не знаю ничего. И скорее всего там будет эта же проблема, что сейчас стоит передо мной.

daslex 22.08.2015 18:55

Сейчас я быстро отвечать не могу, я отхожу от компа. Вечером вернусь. Часов в 23.00 по Москве...

И все-таки очень надеюсь, что решение найти поможете. Как-никак, отвечаете мне. Но надеюсь, что допросы прекратятся, если кому нужно слишком много деталей, готов показать своими глазами, что мне нужно, что у меня есть и что у меня не получается (с помощью teamviewer). Это займет намного меньше времени, чем писать ответы на все тонкости, колкости и проверку на "халявщика".

сейчас отхожу от компа.

laimas 22.08.2015 19:16

Цитата:

Сообщение от daslex
Но надеюсь, что допросы прекратятся, если кому нужно слишком много деталей, готов показать своими глазами

А кто вас допрашивает? Если хозяин описаний вы, если сайт динамический, то почему описания кода хранятся не в базе (а уж там и как раз и место), а свалены а какие-то файлы, к тому же так бездумно отдаваемые клиенту?
Если же все будет на севере организовано надлежащим образом, то запрос каждого описания, это полученное из базы через htmlspecialchars(), и вставленное в один и тот же шаблон html-кода. А какое описание запрашивается, а значит и вставляется, определяется параметром запроса в url для window.open(), а не получается из какого-то массива, который вообще не нужен.

Впрочем как хотите, но что-то советовать не зная всего трудно, и если это для вас "допрос"... ну значит майтесь с массивами и прочим.

KosBeg 22.08.2015 21:17

Когда-прийдете - попробуйте это
<script type='text/javascript' >
function MyFunc(url){
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.send();
  xhr.onreadystatechange = function() {
    if (xhr.readyState != 4) return;
    if (xhr.status != 200) {
      alert('Ошибка: ' + xhr.status + '|' + xhr.statusText);
    } else {
      var NewWin=window.open('','','...');
      NewWin.document.write(xhr.responseText); // xhr.responseText - переменная в которой хранится нужный текст
    }
  }
}

// вызывать функцию так - MyFunc('MyFiles/MyFile.php')
</script>
 
<div id="id2" >
 <b>Кликни меня</b><br />
<script type='text/javascript'>  
document.getElementById("id2").onclick = MyFunc("<?php echo $url ?>"); // $url - нужный адрес, например у вас - "MyFiles/MyFile.php"
</script>
</div>

daslex 22.08.2015 21:54

KosBeg,
Так ничего вообще не происходит. Даже окно не открывается.

laimas,
С базой, конечно, должно быть удобнее решать, но я не умею работать с бд в принципе. И я не знаю насколько удобно потом вносить правки во все файлы максимально быстро. Да и само обращение к файлам работает быстрее чем обращение к бд.
Так-то если надо отдельный файл попраивть или массово что-то там дописать/изменить, то я могу себе что-то свое написать несложное. Из-за 1 правки импортировать бд в пару десятков МБ) Немного забавно, но неудобно. Мой интернет не безлимитный, а безлимитный интернет у меня по географическому положению в принципе отсутствует и еще лет 200 не будет.

Я в принципе не против решения с бд, но как я сказал, я не умею с ней работать программно. Сайт на Wordpress/ Что-то там портить в бд мне не хочется совсем.

daslex 22.08.2015 21:57

KosBeg,
Это же ajax? Я не очень в теме как его дружить с Wordpress.

KosBeg 22.08.2015 22:17

Цитата:

Сообщение от daslex
Это же ajax?

да
Цитата:

Сообщение от daslex
Я не очень в теме как его дружить с Wordpress.

а они по дефолту дружат)))
шутка, но с долей правды
а если честно - ничего дружить не надо!
просто заменяешь это http://javascript.ru/forum/misc/5783...tml#post385169 на тот код который я написал, он полность независим)
правда со своими мини-правками(адрес подправить, може еще что-то)

UPD: извиняюсь - не прочитал сразу...
Цитата:

Сообщение от daslex
Так ничего вообще не происходит. Даже окно не открывается.

ну тогда ничем помочь не смогу...

daslex 22.08.2015 22:21

Скорее всего происходит то, из-за чего я экранировал символы и преобразовывал HTML в HTML сущности. Поэтому даже окно не открывается. Это то о чем я говорил, что, вероятно, будут те же "грабли".

KosBeg 22.08.2015 22:23

хотя я вижу решение именно таким способом - то что нужно хранится в файле, и его загружают аяксом и вставляют в окно

daslex 22.08.2015 22:23

Хоть убейте. У меня не дружат. Я как-то пробовал делать простые вещи на ajax, на чистом HTML локально получилось, а на Wordpress не заработало. (совсем простые примеры).

KosBeg 22.08.2015 22:30

function MyFunc(url){
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.send();
  xhr.onreadystatechange = function() {
    if (xhr.readyState != 4) return;
    if (xhr.status != 200) {
      alert('Ошибка: ' + xhr.status + '|' + xhr.statusText);
    } else {
      alert('All is ok');
	  var NewWin=window.open('','','...');
      NewWin.document.write(xhr.responseText); // xhr.responseText - переменная в которой хранится нужный текст
    }
  }
}
MyFunc('http://javascript.ru/forum/');

нажми у браузере f12 и введи в консоль этот код
появится алетр('All is ok')
откроется окно и будет там нужный текст)))
косяк на твоей стороне...

UPD: всем спокойной ночи, а спать :D

daslex 22.08.2015 22:32

Я подумывал без Аякса сначала преобразовать lдействительные, изначальные HTML сущности в HTML сущности с неким признаком, что они настоящие и их нужно выводить как HTML сущности, потом уже преобразовывать текст так, чтобы javascript его проглатывал, а потом уже пробовать раскодировать этот текст в нужный вид, используя пост2 (Ваш совет), а HTML сущности с признаком преобразовывать в HTML сущности, так как они изначально таковые.

Вот как-то так. Просто знаний нету как такое провернуть.

daslex 22.08.2015 22:40

Цитата:

Сообщение от KosBeg (Сообщение 385205)
нажми у браузере f12 и введи в консоль этот код
появится алетр('All is ok')
откроется окно и будет там нужный текст)))
косяк на твоей стороне...

UPD: всем спокойной ночи, а спать :D

Я попробовал в Опере и вот что получил
Uncaught SyntaxError: Unexpected token <
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)

___________
Снов. Я не задерживаю.

daslex 22.08.2015 23:19

Цитата:

Сообщение от laimas (Сообщение 385180)
А кто вас допрашивает? Если хозяин описаний вы, если сайт динамический, то почему описания кода хранятся не в базе (а уж там и как раз и место), а свалены а какие-то файлы, к тому же так бездумно отдаваемые клиенту?
....
Впрочем как хотите, но что-то советовать не зная всего трудно, и если это для вас "допрос"... ну значит майтесь с массивами и прочим.

А что знать-то.
Допросом я это назвал, потому что я терпеливо отвечаю на ваши вопросы больше чем на страницу и получаю все новые и новые порции вопросов, среди которых есть советы, часть из которых просто "не рабочие варианты", но больше вопросов "почему", "почему каша", "почему не бд", почему "файлы", "зачем преобразовываете","почему", "почему", "почему", "кто автор описаний".., "зачем массив", "какой у Вас сайт".
___________________
У меня сайт НЕ интерактивный, скорее статический, но с БД. CMS Wordpress. На сайте будут страницы, внутри страниц будут блоки с <div id="..">, клик по любому такому div должен открывать окно, в которое будет вписываться текст, который в свою очередь имеет некоторую связь с выбранным div. Я выбрал хранение в файлах, потому что импортировать файлы намного проще и быстрее чем импортирование всей бд при добавлении или редактировании файла и потому что обращение к файлам быстрее чем обращение к БД, т.е. даже грузится будет очень быстро. Т.к. я не могу javascript использовать для серверных файлов, я использую php, а так как файлов много, текст каждого из этого файла я записываю в массив в определенную ячейку. Это тоже самое, что записать этот текст в переменную. Дальше уже я этот текст отдаю клиенту, потому что открыть окно я могу только на клиенте. И что значит бездумно отдаю, я не очень понимаю. Я уже третий раз говорю. Я не знаю javascript. Я не знаю чем будет отличатся передача текста из памяти, которая что-то там хранит на сервере отличаться от передачи из бд.

Вон сколько вопросов.

laimas 23.08.2015 03:16

Цитата:

Сообщение от daslex
И я не знаю насколько удобно потом вносить правки во все файлы максимально быстро. Да и само обращение к файлам работает быстрее чем обращение к бд.
Так-то если надо отдельный файл попраивть или массово что-то там дописать/изменить, то я могу себе что-то свое написать несложное. Из-за 1 правки импортировать бд в пару десятков МБ) Немного забавно, но неудобно.

Эти заблуждения от незнания. Но можно и на файлах, но никак не с таким подходом как у вас. Вы изначально в своих файлах, вернее к походу хранения и получения данных подложили себе мину, создав проблему, а потом героически с не боритесь.

Цитата:

Сообщение от daslex
Сайт на Wordpress

Тем более, не тем вы занимаетесь имея готовую CMS.


Часовой пояс GMT +3, время: 11:57.