现在我正试图通过htmlenties()函数运行数组中每行("记录"/对象)的一个属性/"列"。因为只有该属性/列包含将在DOMhtml中输出的字符串。
然而,我正在获取所需的行并将它们全部放在一个数组中,然后对数组进行JSON编码并发送整个射线。像这样:
<?php
include('connect.php');
$result = mysqli_query($con,"SELECT * FROM pointers WHERE `public` = 1;");
$rows = array();
while($r = mysqli_fetch_array($result))
{
$rows[] = $r;
}
echo json_encode($rows);
mysqli_close($con);
?>
我的表格看起来像的示例
+------+------+------+------+
|key |attr1 |attr2 | attr3|
+------+------+------+------+
|1 | int |string| int |
+------+------+------+------+
|2 | int |string| int |
+------+------+------+------+
|... | ... | ... | ... |
+------+------+------+------+
Attr2是唯一存储字符串的列。
我想知道如何通过attr2为所选的每一行运行htmlenties()
我试着对所有东西进行编码:
echo json_encode(htmlencode($rows));
但后来我的输出没有显示。。。
此外,在我收到行/记录后,在javascript/jQuery中是否有一个等效于htmlencode()客户端的方法?因为目前我可以使用类似dataResponse.attr2
的东西轻松访问每行/记录的特定字符串
谢谢你的帮助!
IMHO您不应该以任何方式使用htmlentities
(除非您有充分的理由这样做),而应该使用htmlspecialchars()
。当您应该这样做的时候,是在构建具有元素的数组时:
while($r = mysqli_fetch_array($result))
{
$r['attr2'] = htmlspecialchars($r['attr2'], ENT_QUOTES, 'UTF-8');
$rows[] = $r;
}
但是,如果您要简单地使用这些数据发送到客户端,以便使用javascript处理/添加到DOM,我只需要使用.createTextNode()
。
从结果集中读取时对其进行编码:
while($r = mysqli_fetch_array($result))
{
$rows[] = $r;
$rows[2] = htmlentities($rows[2]);
}