2016-01-08 4 views
-2

Мне интересно, как эхо-данные, хранящиеся в базе данных, в виде насыщенного текста. Я могу поместить данные в базу данных, но он хранит ее как код. Я хочу, чтобы он эхом отформатировал текст с помощью PHP. Например, если один из моих пользователей вводит химическую формулу CO с 2 индексируются, он будет храниться в базе данных MySQL в качестве кода:php echo rich text из кода в базе данных mysql

 CO<sub>2</sub> 

Я не хочу, чтобы этот код будет вторит , Вместо этого я хочу отформатировать текст «CO ». Возможно ли это, и если да, то как? Я бы хотел, чтобы вся расширенная текстовая разметка повторялась вместо фактического форматированного текста, а не кода.

+1

Просто спрашивая PHP, что «эхо» содержимое базы данных должно достичь именно того, что вы хотите. Похоже, вы используете значение, полученное из базы данных, с помощью функции escaping, например 'htmlentities()'? Тем не менее, вы абсолютно должны убедиться, что любые данные, которые вы выдаете без экранирования, являются * чистыми *, если вы храните произвольные данные, предоставленные пользователем в этой таблице, вы можете быть уязвимы для атак XSS. – eggyal

+0

Вот как я эхо: while ($ row = $ stmt-> fetch (PDO :: FETCH_ASSOC)) { echo $ row ['Question']. '|'. $ Row ['AnswerA']. '|'. $ строки [ 'AnswerB']. '|'. "bl3nq" $ строка [ 'AnswerC']. '|'. "bl3nq" $ строка [ 'AnswerD']. ". |" bl3nq. »$ строка [ 'AnswerE']. '|' $ строки [ 'rightanswer']. '|' $ строки [ 'scrambleanswers']. '|'. " noimg" $ строка [ 'изображение']. . '|' "bl3nq" $ строка [ 'обратной связи'] '|' "bl3nq" $ строка [ 'ImageSource'] '|'.....; } Не думаю, что я использую какую-либо необычную функцию эвакуации. Возможно, PDO делает это автоматически? – brett

+0

Нет, PDO не исчезает автоматически. Вы уверены, что данные хранятся в базе данных без сохранения? Возможно, вы избежали его до вставки? – eggyal

ответ

-1

Перед вставкой в ​​вашу базу данных используйте htmlspecialchars ($ string);

Пример:

$string = "CO<sub>2</sub>"; 
$stringToInsert = htmlspecialchars($string); 

После вставки $ stringToInsert в вашей базе данных, вы можете печатать на странице, как это:

$decodedString = htmlspecialchars_decode($stringToInsert); 
echo $decodedString; 

Я preffer используя htmlspecialchars вместо htmlentities для этого случая.

+0

Привет, Пабло, это вставляется с плагином: ckeditor, поэтому я не знаю, как изменить способ его ввода, но он вводится как код. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы она эхо отражалась как форматированный текст, а не код. – brett

+0

@brett: [CKEditor выгружает HTML по умолчанию] (https://stackoverflow.com/questions/12700383/ckeditor-is-escaping-html-elements). – eggyal

+0

похоже, что эхо-сигнал прекрасно проверяется на эхо, но мой интерфейс приложения html5/javascript снова перезаписывает его как код. Не знаю, как это исправить. Если у вас есть идеи, это было бы здорово. – brett

0

Оказалось, что PHP-скрипт правильно отражает текст, но мой пользовательский интерфейс (приложение HTML5/javascript) затем берет эхо-форматированный текст и записывает его как код. Итак, короче говоря, эхо работает в php. Теперь мне просто нужно выяснить, как заставить мое внешнее приложение отображать текст в виде богатого текста, а не кода.