mysqli_query 结果为 JSON。如何应用htmlentities()?

mysqli_query result to JSON. How to apply htmlentities()?

我有这段代码,我用它来填充 select 和来自另一个 php 页面的 ajax 调用:

$id = $_GET["id"];
$sql = "SELECT town_name, 
               town_code 
        FROM   tbtown 
        WHERE  area_id = '$id' 
        ORDER BY town_name";
$result = mysqli_query($conn, $sql);
$arr = array();
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    $arr[] = $row;
}
echo json_encode($arr);

一些 town_name 列值,包含像 è ì 这样的字符,我发现在这些情况下 json_encode() 函数将该值设置为 NULL。

我还发现 htmlentities() 应用于每个数组值的函数解决了这个问题。

我想知道是否有一种简单的方法可以将 htmlentities() 应用于整个数组。

您可以为此使用 array_walk_recursive

array_walk_recursive($arr, function(&$item, $key) {
    $item = htmlentities($item);
});

试试这个,

echo json_encode($arr, JSON_UNESCAPED_UNICODE);