【发布时间】:2011-01-01 12:52:08
【问题描述】:
在我的 PHP 项目中,我有一个包含特殊字符的值,例如“、”等(“5”英寸、“3.5”英寸等)。但它没有出现在文本字段中。我该如何显示这个?
是否可以在文本框中显示此值?
【问题讨论】:
在我的 PHP 项目中,我有一个包含特殊字符的值,例如“、”等(“5”英寸、“3.5”英寸等)。但它没有出现在文本字段中。我该如何显示这个?
是否可以在文本框中显示此值?
【问题讨论】:
我需要将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表单。
【讨论】:
我个人使用这个技巧:
$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8')));
【讨论】:
我发现您是否在 JavaScript 中的变量(来自 Ajax/数据库)中使用双引号,并且您想将它放在一个字段中 - 如果您构建整个字段/表单 HTML 内容,然后将其交换为div 使用innerHTML,值中的双引号会导致问题。我正在这样做,但我也无法通过逃避来解决它。
您应该使用字段构建 HTML 内容并先将其交换,然后执行 document.getElementById('myfieldid').value = thevalue;相反,它工作正常。
【讨论】:
当使用字符集 UTF-8 时,我使用下面的代码来获得 Iñtërnâtiônàlizætiøn 和双(或单)引号:
<input type="text" name="title" value="<?php echo htmlentities(stripslashes(utf8_decode($title))); ?>" />
PS:这在有人提交表单后很有用,但在输入未验证时。
【讨论】:
stripcslashes() 来保留更改行。
我想你的“文本框”是一个 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" />
【讨论】:
htmlspecialchars() 就足够了。
对于 UTF-8,我选择了 htmlspecialchars($value, ENT_QUOTES, "UTF-8"),它成功了。
【讨论】:
试试这个
echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />';
或
<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>">
祝你好运;)
【讨论】:
使用htmlentities:
<input value="<?php echo htmlentities($value);?>">
【讨论】:
html_entity_decode(); 吗?听起来不太好
stripcslashes()结合更好
htmlentities($value,ENT_QUOTES) 另外,我最近遇到了 UTF-8 的问题,所以根据您的需要,您可能想要传递 'UTF-8' 作为编码(第三个参数)。