在我的php项目中,我有一个包含特殊字符的值,如“,”等(“5”英寸,“3.5英寸”等)。但它不会出现在文本字段中。我如何显示这个 是否可以在文本框中显示此值?有人帮助我......
答案 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 " inches" />
答案 2 :(得分:6)
对于UTF-8,我去了htmlspecialchars($value, ENT_QUOTES, "UTF-8")
,这就是诀窍。
答案 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表单,那么它会做一些不必要的工作。