Поле ввода, содержащее значение двойных кавычек - PullRequest
18 голосов
/ 05 января 2010

В моем проекте php у меня есть значение, связанное со специальными символами, такими как "," и т. Д. ("5" дюймов, "3,5" дюймов и т. Д.). Но это не отображается в текстовом поле. Можно ли отобразить это значение в текстовом поле? Помогает ли кто-нибудь мне ...

Ответы [ 8 ]

82 голосов
/ 05 января 2010

Использование htmlentities :

<input value="<?php echo htmlentities($value);?>">
10 голосов
/ 05 января 2010

Полагаю, ваше "текстовое поле" является элементом HTML <input>?

Если это так, вы отображаете его, используя что-то вроде этого:

echo '<input name="..." value="' . $yourValue . '" />';

Если это так, вам нужно экранировать HTML-код, содержащийся в вашей переменной, с помощью htmlspecialchars:

echo '<input name="..." value="' . htmlspecialchars($yourValue) . '" />';

Обратите внимание, что вам может потребоваться добавить пару параметров, особенно для указания используемой вами кодировки.


Таким образом, учитывая, что $yourValue был инициализирован следующим образом:

$yourValue = '5 " inches';

Вы получите из этого сгенерированного HTML:

<input name="..." value="5 " inches" />

К тому, который работает намного лучше:

<input name="..." value="5 &quot; inches" />
6 голосов
/ 26 февраля 2014

Для UTF-8 я выбрал htmlspecialchars($value, ENT_QUOTES, "UTF-8"), который добился цели.

источник стека

5 голосов
/ 10 сентября 2011

При использовании кодировки UTF-8, я использую код ниже, чтобы получить правильные двойные (или одинарные) кавычки:

<input type="text" name="title" value="<?php echo htmlentities(stripslashes(utf8_decode($title))); ?>" />

ps: это полезно после того, как кто-то отправил форму, но когда ввод не подтвержден.

1 голос
/ 14 марта 2012

Это немного устарело, но я нашел его, поэтому подумал, что поделюсь тем, что узнал.

Я обнаружил, если у вас есть двойные кавычки в переменной в javascript (из AJAX / базы данных и т. Д.), И вы хотите поместить его в поле - если вы строите HTML-код всего поля / формы, а затем меняете его в div используя innerHTML, двойные кавычки в значении вызовут проблемы. Я делал это, и я не мог найти способ обойти это, спасаясь либо.

Вы должны построить html с полем и сначала поменять его местами, а затем выполнить document.getElementById ('myfieldid'). Value = thevalue; вместо этого, и он отлично работает.

0 голосов
/ 13 февраля 2014

Мне нужно было применить htmlspecialcars() для запроса массива результатов. Я нашел полезное решение отсюда (см. Комментарий Шона).

//create a cleaning function
function _clean(&$value) {
  $value = htmlspecialchars($value);
  //$value = htmlspecialchars($value, ENT_QUOTES);//alternative
}

//fetch the data from DB somehow (sqlQ is a custom function)
$q = "...";
$r = $d->sqlQ($q);
$row = mysqli_fetch_array($r,MYSQLI_ASSOC);

//...call the function recursively (not always necessary) to the resultset row
array_walk_recursive($row, '_clean');

Это делает довольно ненужную работу, если вы выбираете только несколько текстовых столбцов, но, по крайней мере, вам не нужно многократно записывать функцию htmlspecialchars() в форму HTML.

0 голосов
/ 15 марта 2013

Personnaly Я использую этот трюк:

$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8')));
0 голосов
/ 13 мая 2011

Попробуйте это

 echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />';

или

<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>">

Удачи;)

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