Кавычки в текстовом поле input

Рейтинг: 2Ответов: 4Опубликовано: 27.04.2015

Привет. Сразу перейду к делу. Есть следующий код:

$test = "Каждый 'охотник' желает знать.";
// $test = addslashes($test); // это не помогло
echo "<input type='text' value=' " . $test . " ' />";

Как видно из этого кода, в тексте имеются одинарные кавычки. Данный текст через переменную вставляется в текстовое поле. Атрибут value заключён в одинарные кавычки. Получается что одинарные кавычки, находятся внутри других одинарных кавычек. При выводе на страницу, текст в текстовом поле, урезается до первой кавычки. Аналогичная ситуация наблюдается и в случае, если вместо одинарных кавычек, будут двойные кавычки.

Данные в это текстовое поле вставляются из БД. Посему я не могу знать, какие именно кавычки нам попадутся в тексте. Как правильно вставить кавычки в текстовое поле? Есть ли в PHP что-нибудь полезное для таковых ситуаций?

Ответы

▲ 6

Зачем рисковать - вот хорошая функция htmlspecialchars.

▲ 3

Вы можете использовать функцию htmlspecialchars().

▲ 2

При выводе любой строки на страницу ее желательно обработать функцией htmlspecialchars, если только не предполагается, что она должна содержать в себе кусок HTML-разметки:

echo "<input type='text' value=' " . htmlspecialchars($test) . " ' />";
▲ 1

Чисто ради разнообразия ответов: можно заменять все кавычки (из БД) одного типа на другой. Например все одинарные кавычки заменять двойными при выводе, а в инпуте использовать одинарные.

Самый на мой взгляд правильный вариант - использовать фреймворк который сам будет думать о такой проблеме (и множестве других).