// 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');
9条答案
按热度按时间zf2sa74q1#
使用htmlentities:
nmpmafwu2#
我想您的“文本框”是一个HTML
<input>
元素吧?如果是这样,您将使用如下方式显示它:
如果是这种情况,您需要使用
htmlspecialchars
对变量中包含的HTML进行转义:请注意,您可能需要添加几个参数,特别是指定您正在使用的编码。
这样,考虑到
$yourValue
已经被初始化为:您将从生成的HTML中获得:
到了那个,效果更好:
wsxa1bj13#
对于UTF-8,我选择了
htmlspecialchars($value, ENT_QUOTES, "UTF-8")
,这就成功了。stack source
rfbsl7qr4#
当使用字符集UTF-8时,我使用下面的代码来获得Iñtërnâtiônàlizætiøn * 和 * 双引号(或单引号):
PS:这在某人提交表单之后很有用,但是当输入没有被验证的时候。
2ic8powd5#
我发现如果你在JavaScript中的变量中有双引号(来自 AJAX /数据库),而你想把它放在一个字段中--如果你构建整个字段/表单HTML内容,然后使用innerHTML将其交换到一个div中,值中的双引号会引起问题。我正在这样做,但我也找不到一个通过转义来绕过它的方法。
您应该先用字段构建HTML内容并将其交换进来,然后执行文档。getElementById('myfieldid').value = thevalue;相反,它工作得很好。
nzkunb0c6#
我需要将
htmlspecialcars()
应用到查询结果数组中,我找到了a useful solution from here(参见sean的注解)。如果只获取几个文本列,那么它会做很多不必要的工作,但至少不需要多次向HTML表单写入
htmlspecialchars()
函数。ttygqcqt7#
试试这个
或
祝你好运;)
vyu0f0g18#
就我个人而言,我使用这个技巧:
sigwle7e9#
看起来在HTML输入中管理单引号和双引号(以及其他特殊字符)的最好方法是通过文本区域字段来模拟它。所以只需要创建一个文本区域而不是输入字段,并给予一些样式来使它看起来像一个本地输入。