Как я должен повторять строковую переменную PHP, которая содержит специальные символы?

Я пытаюсь заполнить форму некоторыми данными, которые содержат специальные символы (например, одинарная кавычка, двойная кавычка, <,>,?, "," ". ~ ,,! @ # $% ^ & * () _ +} {":? <<>,. /; '[.] и т. д.):

<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; ?> 

вам нужно поместить «[.]» в переменную, так как константа будет разбиваться на одну (одинарная кавычка).