Я пытаюсь заполнить форму некоторыми данными, которые содержат специальные символы (например, одинарная кавычка, двойная кавычка, <,>,?, "," ". ~ ,,! @ # $% ^ & * () _ +} {":? <<>,. /; '[.] и т. д.):
<input type="text" name="message" size="200" maxlength="200" value =<?php echo $message;?>>
Однако $message
, которое поступает из таблицы MySQL, отображается неправильно – любой вывод HTML, который должен быть в $message
, нарушен.
Как это сделать правильно?
Это предотвратит нарушение тэгов от эха:
<?php echo htmlentities($message); ?>
Если вы хотите отобразить его
echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8');
Это то, что я обычно делаю.
Поскольку ответы различаются:
htmlentities-vs-htmlspecialchars стоит проверить.
Обычно я использую следующий код, см. Htmlspecialchars
<?php echo htmlspecialchars($videoId, ENT_QUOTES | ENT_HTML5); ?>
Что не так с использованием константы?
<?php define(foo,'<,>,?,","".~,,!@#$%^&*()_+}{":?<<>,./;'); $foo2="'[.]"; echo constant('foo').$foo2; ?>
вам нужно поместить «[.]» в переменную, так как константа будет разбиваться на одну (одинарная кавычка).