如何通过输出数组每行的一个属性来运行htmlenties()


how to run htmlentities() through specifically one attribute of every row of output array

现在我正试图通过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]);
  }