Как избежать двойного кодирования в <INPUT>при использовании htmlspecialchars - PullRequest
0 голосов
/ 03 декабря 2011

Скажем, у вас есть текст <INPUT> для имени пользователя, и он решает ввести

Johnny's Pizza

Это сохраняется в БД как

Johnny's Pizza

Но если пользователь решитдля редактирования я заново заполняю текст <INPUT> следующим образом

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));

, который будет отображаться как

Johnny&#039;s Pizza

внутри поля ввода.

PHP.net имеет комментарий здесь , предлагающий использовать

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8', FALSE));

, то есть FALSE, относящийся к $double_encoding, но я все еще получаю

Johnny&#039;s Pizza

в поле ввода.

Есть ли способ обойти это двойное кодирование?Это что-то, что можно исправить при использовании ENT_QUOTES?

Использование Codeigniter 2.0.3.

1 Ответ

2 голосов
/ 03 декабря 2011

Использование htmlspecialchars является правильным подходом и не даст описанного вами результата, если вы выведете его непосредственно на страницу.

Предположительно, функция form_input ожидает получения текста, а не HTML, поэтому она сама запускает htmlspecialchars. Если это так, решение состоит в том, чтобы просто передать ему текст, а не кодировать значение для HTML.

...