php - devbridge 自动完成中的特殊字符
问题描述
我正在使用最新的 devbridge 自动完成功能,它显示来自 mysql 数据库的德国城市,但它不会重新使用特殊字符。
我的测试文件如下所示:
<html>
<html lang="de">
<head>
<meta charset="utf-8"/>
<script src="jquery-1.8.2.min.js"></script>
<script src="jquery.autocomplete.min.js"></script>
<link rel="stylesheet"type="text/css" href="styles.css">
<style>
h1 {text-align: center; margin: 20px 20px;}
#autocomplete,#country {margin: 0 auto;}
</style>
</head>
<body>
<h1>Autocomplete Input</h1>
<input type="text" id="autocomplete">
<script>
$('#autocomplete').autocomplete({
serviceUrl: 'search.php',
minChars: 2,
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
</script>
</body>
</html>
search.php 文件如下所示:
<?php
///
/*** connect to your DB here ***/
include_once "scripts/connect_all.php";
///
//retrieve the search term and strip and clean input
$term = trim(strip_tags($_GET['query']));
//try to make user input safer
$term = mysqli_real_escape_string($myConnection, $term);
//build a query on the database
$sqlCommand = "SELECT gemeinde FROM cities WHERE gemeinde LIKE '%".$term."%'";
//query the database for entries containing the term
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
$reply = array();
$reply['suggestions'] = array();
while ($row = mysqli_fetch_array($query)) {
$gemeinde = $row["gemeinde"];
$reply['suggestions'][]=htmlentities(stripslashes($row['gemeinde']));
}
mysqli_free_result($query);
//format the array into json data
echo json_encode($reply);
?>
运行search.php?query=münch
时会抛出:
{"suggestions":["Münchehofe","Müncheberg, Stadt","Münchenbernsdorf, Stadt","Korntal-Münchingen, Stadt","Münchwald","München, Landeshauptstadt","Grafing b.München, St","Garching b.München, St","Kirchheim b.München","Gdefr. Geb. (Lkr München)","Münchsmünster","Bodenwerder, Münchhausenstadt","Münchweiler an der Alsenz","Glan-Münchweiler","Münchweiler am Klingbach","Münchweiler an der Rodalb","Waldmünchen, St","Münchberg, St","Münchhausen","Münchsteinach","Schwabmünchen, St"]}
但是当将它提供给自动完成功能时,它会抛出一个包含正确位置的列表,但会将特殊字符转换ü
为ü
;
Münchehofe
Müncheberg
Münchenbernsdorf
- ETC
如何确保特殊字符保留在自动完成功能的输出中?
解决方案
得到它并在下面分享答案以供将来参考。删除 htmlentities 和 stripslashes 完成了这项工作,所以:
$reply['suggestions'][]=($row['gemeinde']);
推荐阅读
- excel - 赋予三角洲权重
- r - 您将如何从 R 数据框列中的字符串中提取最后 3 个字符?
- r-markdown - Rmarkdown / bookdown pdf输出中的连字问题
- boost - Boost.Beast 的 websocket::stream::async_read 是否应该返回“短读”错误?
- visual-c++ - 在 MFC 中使用 TaskDialogIndirect 时出现异常
- android - 为什么 Android 存在特定于 Kotlin 的依赖项
- excel - 在 ABAP 中使用密码加密或保护文件
- bash - 通过忽略分隔符前后的空格来拆分逗号分隔的字符串,并将其存储在 shell 脚本中的数组中
- python - 从新窗口、按钮和脚本到主脚本/窗口 python+tkinter 的值
- amazon-web-services - 如何使用 AWS ALB 作为入口控制器将多个服务映射到单个入口?