<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2109&amp;type=atom" />
	<updated>2011-02-25T03:36:06Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2109</id>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15154#p15154" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p>На счет почитать - даже не знаю что сказать.</p><p>Собственно проблему кодирования символов лучше решать разделением блока кода (тот что надо кодировать) и текстового блока, который кодировать не надо.</p><p>Как вариант, можно использовать подобие BBCode, и применить к такому тексту поиск по регулярному выражению с выполнением функции обратного вызова. Звучит может и сложно, но на самом деле выглядит так.<br /></p><div class="codebox"><pre><code>&lt;?php

function encode_html($matches) {
  return htmlspecialchars(htmlspecialchars($matches[1]));
}

$str = &#039;текст
[htmlspecialchars]
&lt;html&gt;&lt;/html&gt;
[/htmlspecialchars]
текст&#039;;

echo preg_replace_callback(&#039;/\[htmlspecialchars\](.*?)\[\/htmlspecialchars\]/is&#039;, &#039;encode_html&#039;, $str);

?&gt;</code></pre></div></blockquote></div><p>Спасибо, попробую разобраться.</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-25T03:36:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15154#p15154</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15150#p15150" />
			<content type="html"><![CDATA[<p>На счет почитать - даже не знаю что сказать.</p><p>Собственно проблему кодирования символов лучше решать разделением блока кода (тот что надо кодировать) и текстового блока, который кодировать не надо.</p><p>Как вариант, можно использовать подобие BBCode, и применить к такому тексту поиск по регулярному выражению с выполнением функции обратного вызова. Звучит может и сложно, но на самом деле выглядит так.<br /></p><div class="codebox"><pre><code>&lt;?php

function encode_html($matches) {
  return htmlspecialchars(htmlspecialchars($matches[1]));
}

$str = &#039;текст
[htmlspecialchars]
&lt;html&gt;&lt;/html&gt;
[/htmlspecialchars]
текст&#039;;

echo preg_replace_callback(&#039;/\[htmlspecialchars\](.*?)\[\/htmlspecialchars\]/is&#039;, &#039;encode_html&#039;, $str);

?&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-02-24T20:19:33Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15150#p15150</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15149#p15149" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p>В textarea сущности вида &amp;lt; обязательно будут преобразованы в соответствующие символы, поэтому для textarea символ &lt; в виде сущности будет выглядеть так (&amp;amp;lt;), то есть нужна двойная кодировка.</p><p>Если есть текст к которому нельзя применять функцию htmlspecialchars() и в нем же есть текст для которого эта кодировка обязательна, то лучше подумать над разделением этих блоков текста, иначе потребуется мучительная кодировка символов вручную.</p></blockquote></div><p>Спасибо. ??? Я в растеренности. Что почитать? Посоветуйте.</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-24T17:31:35Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15149#p15149</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15148#p15148" />
			<content type="html"><![CDATA[<p>В textarea сущности вида &amp;lt; обязательно будут преобразованы в соответствующие символы, поэтому для textarea символ &lt; в виде сущности будет выглядеть так (&amp;amp;lt;), то есть нужна двойная кодировка.</p><p>Если есть текст к которому нельзя применять функцию htmlspecialchars() и в нем же есть текст для которого эта кодировка обязательна, то лучше подумать над разделением этих блоков текста, иначе потребуется мучительная кодировка символов вручную.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-02-24T17:16:59Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15148#p15148</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15147#p15147" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>DmitryV сказал:</cite><blockquote><p>текст вида:<br />заменить на:</p><p>&amp;lt;html&amp;gt;<br />&amp;lt;head&amp;gt;<br />&amp;lt;title&amp;gt;Моя первая страница в интернете&amp;lt;/title&amp;gt;<br />&amp;lt;/head&amp;gt;<br />&amp;lt;body&amp;gt;<br />&amp;lt;p&amp;gt;А это Мои первые слова на WEB-странице!!&amp;lt;/p&amp;gt;<br />&amp;lt;/body&amp;gt;<br />&amp;lt;/html&amp;gt;</p></blockquote></div><p>Всё это я делаю и сохраняю в БД в таком виде, но когда я извлекаю из БД в форму ( в <strong>textarea</strong>) , то все обозначения типа &amp;lt; заменяются на их оригиналы, а при извлечении того же текста из БД в баузер всё происходит правильно.<br />А htmlspecialchars(), обработает всё, и нужное и не нужное, мне так кажется. Я же сохраняю в БД код с обыкновенными тегами, которые не надо преобразовывать и уже преобразованные мной теги, которые затем непонятным мне образом превращаются снова в обычные теги. Вот в этом то и есть моя проблема.<br />Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-24T15:12:29Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15147#p15147</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15146#p15146" />
			<content type="html"><![CDATA[<p>текст вида:<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Моя первая страница в интернете&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;А это Мои первые слова на WEB-странице!&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p><p>заменить на:</p><p>&amp;lt;html&amp;gt;<br />&amp;lt;head&amp;gt;<br />&amp;lt;title&amp;gt;Моя первая страница в интернете&amp;lt;/title&amp;gt;<br />&amp;lt;/head&amp;gt;<br />&amp;lt;body&amp;gt;<br />&amp;lt;p&amp;gt;А это Мои первые слова на WEB-странице!!&amp;lt;/p&amp;gt;<br />&amp;lt;/body&amp;gt;<br />&amp;lt;/html&amp;gt;</p>]]></content>
			<author>
				<name><![CDATA[DmitryV]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2987</uri>
			</author>
			<updated>2011-02-23T20:28:01Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15146#p15146</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15145#p15145" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Юрий Иванович сказал:</cite><blockquote><p>Текст надо сохранить в виде одной строки.</p></blockquote></div><p>Текст сохранить в базе данных? Если да, то не вижу совершенно никаких проблем.</p><p>Если данный текст надо вывести из БД, то я уже упомянул функцию htmlspecialchars(), которую и надо использовать.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-02-23T20:27:19Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15145#p15145</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15144#p15144" />
			<content type="html"><![CDATA[<p>В догонку, Мне надо сделать также, как выглядит, приведённый мной отрывок текста, в предыдущем сообщении. Теперь, мне кажется, всё наглядно. Может быть это очень просто, но я этого не знаю.<br />Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-23T17:30:09Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15144#p15144</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15143#p15143" />
			<content type="html"><![CDATA[<p>Вот отрывок текста:<br /></p><div class="quotebox"><blockquote><p>Всё, текстовый документ создан.<br />Откройте его и напишите в нем следующий код:</p><p><strong>&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Моя первая страница в интернете&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;А это Мои первые слова на WEB-странице!&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</strong><br />Теперь сохраним наш файл: выбираем в меню блокнота &quot;ФАЙЛ - СОХРАНИТЬ КАК&quot;, и в выпавшем окне сохраняем наш документ под каким либо именем, например, page.html. Обязательно в латинице и с расширением (после точки) html</p></blockquote></div><p>Весь текст и то, что выделено жирным надо сохранить в таком же виде, но я не могу выделить жирную часть в отдельную строку. Если попытатья это сделать, то мне кажется, что это будет неоправдано сложным.<br />Текст надо сохранить в виде одной строки. Но если у вас есть какой-либо хитроумный способ, пожалуйста, поделитесь им.<br />Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-23T17:25:20Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15143#p15143</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15142#p15142" />
			<content type="html"><![CDATA[<p>Без примера я не очень понял, но если надо вывести html код на странице в его исходном виде, то следует обязательно применять функцию кодирования htmlspecialchars().<br /></p><div class="codebox"><pre><code>print htmlspecialchars($string);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-02-23T16:50:14Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15142#p15142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[По разному извлекаются тексты из БД в браузер и в файл редактирования]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=15141#p15141" />
			<content type="html"><![CDATA[<p>Свои тексты я пишу в Дримвиавере и когда мне необходимо ввести в текст элементы кода, то редактор заменяет некоторые элементы на их условные эквиваленты. Заношу весь текст в виде кода в БД через админку сайта, проверяю в баузере и вижу, что всё так как должно быть. Но если мне приходится редактировать этот же текст и я вытаскиваю его из БД в форму для редактирования, то уже вижу, что все условные обозначения заменились на их оригиналы и, естественно, при таком исходе получается, что мои фрагменты кода становятся невидимыми для браузера. Я пытался фрагменты кода заключать в теги <strong>pre</strong> и&nbsp; <strong>code</strong>, не помогает. Вывод текста из БД в браузер и в форму редактиования осуществляется одними и теми же способами через <strong>printf</strong> и <strong>$myrow</strong> в нужное место. Почему есть разница в результате не понимаю. Научите, пожалуйста, делать нормальные листинги фрагментов кода. Возможно я просто не знаю этого так как я самоучка.<br />Спасибо</p>]]></content>
			<author>
				<name><![CDATA[Юрий Иванович]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3262</uri>
			</author>
			<updated>2011-02-23T15:03:20Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=15141#p15141</id>
		</entry>
</feed>
