PHP echo () MySQL результат, содержащий символы <>? - PullRequest
2 голосов
/ 27 октября 2010

Я получаю данные из своей базы данных SQL ...

данные точно так же, как в БД = (21:48:26) <username> some text here. is it ok?

, когда я пытаюсь и echo $row['log']."<br>";

это отображается как = (21:48:26) некоторый текст здесь.это нормально?

Полагаю, это связано с тем, что скобки <> заставляют его думать, что это открывающий HTML-код ... так ли это?и если да, то как можно повторить строку, содержащую HTML?

Ответы [ 3 ]

8 голосов
/ 27 октября 2010

Используйте htmlspecialchars() для перевода управляющих символов HTML в их сущности:

echo htmlspecialchars($row['log'])."<br>";
3 голосов
/ 27 октября 2010

Вам нужно экранировать символы, чтобы они не распознавались как элемент HTML, а как текст

echo htmlentities( $row['log'] ) . '<br/>';
1 голос
/ 27 октября 2010

Полагаю, это связано с тем, что скобки <> заставляют его думать, что он является открывателем HTML ...

Да, любая конструкция в скобках <> обрабатывается веб-браузером как HTMLтег.Таким образом, вы должны использовать либо htmlspecialchars () или htmlentities (), либо какую-либо аналогичную пользовательскую функцию для преобразования символов «<» и «>» в ​​строки «<» и «>», которые отображаются для пользователя в виде скобок.

Еще несколько комментариев:

  • ВСЕ текстовые данные, отображаемые пользователю, должны быть переданы через функцию htmlspecialchars () (или через другую функцию с похожим поведением), поскольку «некоторый текст» также может содержатьтеги и т. д.

  • Вероятно, было бы лучше хранить дату / время, имя пользователя и "некоторый текст" в отдельных столбцах таблицы в БД, чтобы удовлетворить ограничениям реляционной базы данных.Это может потребовать дополнительного анализа входных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...