0

现在,我正在尝试通过 htmlentities() 函数在数组中运行每一行(“记录”/对象)的一个属性/“列”。因为只有该属性/列包含将在 DOM html 中输出的字符串。

但是,我正在获取所需的行并将它们全部放入一个数组中,然后对数组进行 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 运行 htmlentities() ,对于选择的每一行。

我只是尝试对所有内容进行 htmlencode 编码:

echo json_encode(htmlencode($rows));

但是后来我的输出没有显示...

另外,在我收到行/记录后,是否有一种等效于 htmlencode() 客户端的方法,在 javascript/jQuery 中?因为目前我可以使用类似这样的方式轻松访问每行/记录的特定字符串dataResponse.attr2

谢谢你的帮助!

4

2 回答 2

1

从结果集中读取它时对其进行编码:

while($r = mysqli_fetch_array($result))
  {
    $rows[] = $r;
    $rows[2] = htmlentities($rows[2]);
  }
于 2013-07-06T20:36:26.017 回答
1

恕我直言,您不应该使用htmlentities任何一种方式(除非您有充分的理由这样做),而只需使用htmlspecialchars(). 当你应该这样做是在用元素构造数组时:

while($r = mysqli_fetch_array($result))
{
    $r['attr2'] = htmlspecialchars($r['attr2'], ENT_QUOTES, 'UTF-8');
    $rows[] = $r;
}

但是,如果您打算简单地使用此数据发送到客户端以使用 javascript 处理/添加到 DOM,我只会使用.createTextNode().

于 2013-07-06T20:36:39.403 回答