В моем проекте php у меня есть значение, связанное со специальными charectors типа "," и т.д. ( "5 дюймов", "3,5 дюйма" и т.д.), но оно не отображается в текстовом поле. возможно ли отобразить это значение в текстовом поле? Помогает ли мне кто-нибудь...
Поле ввода, содержащее значение двойных кавычек
Ответ 1
Используйте htmlentities:
<input value="<?php echo htmlentities($value);?>">
Ответ 2
Я полагаю, что ваше "текстовое поле" представляет собой элемент 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 " inches" />
Ответ 3
Для UTF-8 я пошел за htmlspecialchars($value, ENT_QUOTES, "UTF-8")
, который сделал трюк.
Ответ 4
При использовании кодировки UTF-8 я использую код ниже, чтобы получить Iñtërnâtiônàlizætiøn И двойные (или одиночные) цитаты справа:
<input type="text" name="title" value="<?php echo htmlentities(stripslashes(utf8_decode($title))); ?>" />
ps: это полезно после того, как кто-то отправил форму, но когда вход не подтвержден.
Ответ 5
Попробуйте это
echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />';
или
<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>">
Удачи;)
Ответ 6
Это немного устарело, но я нашел его, поэтому я решил внести свой вклад в то, что узнал.
Я нашел, если у вас есть двойные кавычки в переменной в javascript (из AJAX/database any), и вы хотите поместить ее в поле - если вы создадите целое поле/форму html, а затем замените это на div используя innerHTML, двойные кавычки в значении вызовут проблемы. Я делал это, и я не мог найти способ обойти его, избегая также.
Вы должны создать html с полем и сначала поменять его, а затем сделать document.getElementById('myfieldid'). value = thevalue; вместо этого он отлично работает.
Ответ 7
Personnaly Я использую этот трюк:
$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8')));
Ответ 8
Мне нужно было применить htmlspecialcars()
для запроса массива результатов. Я нашел полезное решение здесь (см. Комментарий sean).
//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-форму несколько раз.