输入字段包含双引号值

时间:2010-01-05 05:13:19

标签: php html

在我的php项目中,我有一个包含特殊字符的值,如“,”等(“5”英寸,“3.5英寸”等)。但它不会出现在文本字段中。我如何显示这个 是否可以在文本框中显示此值?有人帮助我......

8 个答案:

答案 0 :(得分:80)

使用htmlentities

<input value="<?php echo htmlentities($value);?>">

答案 1 :(得分:10)

我认为您的“文本框”是HTML <input>元素?

如果是这样,您将使用以下内容显示它:

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

如果是这种情况,您需要使用htmlspecialchars转义变量中包含的HTML:

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

请注意,您可能需要添加几个参数,尤其是指定您正在使用的编码。


这样,考虑$yourValue已初始化为:

$yourValue = '5 " inches';

您将从此生成的HTML中获取:

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

对于那个效果更好的那个:

<input name="..." value="5 &quot; inches" />

答案 2 :(得分:6)

对于UTF-8,我去了htmlspecialchars($value, ENT_QUOTES, "UTF-8"),这就是诀窍。

stack source

答案 3 :(得分:5)

使用charset UTF-8时,我使用下面的代码来获取Iñtërnâtiônàlizætiøn和双(或单)引号:

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

ps:在有人提交表单后,但在输入未经过验证时,这很有用。

答案 4 :(得分:1)

这有点旧,但我找到了所以我认为我会贡献我学到的东西。

我发现你是否在javascript中的变量中有双引号(来自AJAX /数据库)并且你想把它放在一个字段中 - 如果你构建整个字段/表单html然后将它交换为div使用innerHTML,值中的双引号将导致问题。我这样做了,我无法通过逃避来解决这个问题。

您应该使用字段构建html并首先交换它,然后执行document.getElementById('myfieldid')。value = thevalue;相反,它工作正常。

答案 5 :(得分:0)

试试这个

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

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

答案 6 :(得分:0)

我个人使用这个技巧:

$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8')));

答案 7 :(得分:0)

我需要将htmlspecialcars()应用于查询结果数组。我找到了a useful solution from here(参见肖恩的评论)。

//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表单,那么它会做一些不必要的工作。