学生在这里。对于一个项目,我实现了jQuery UI's autocomplete widget。该小部件允许调用PHP脚本,该脚本返回包含建议的JSON数据。我使用的API提供了一个大型JSON文件,其中包含允许的条目(大约30兆),格式如下:
[
{
"id": 707860,
"name": "Hurzuf",
"country": "UA",
"coord": {
"lon": 34.283333,
"lat": 44.549999
}
},
{
"id": 519188,
"name": "Novinki",
"country": "RU",
"coord": {
"lon": 37.666668,
"lat": 55.683334
}
},
你明白了吧。为了查找部分匹配,下面是我编写的PHP脚本:
<?php
$cityPage = file_get_contents("citylist.json");
function strpos_all($haystack, $needle) {
$offset = 0;
$cityArray = array();
while (($pos = strpos($haystack, $needle, $offset)) !== FALSE) {
$offset = $pos + 1;
$length= (strpos($haystack, '"coord"', $offset)-$pos);
$city = str_replace('",
"country": "',", ",(substr($haystack, $pos, ($length-7))));
if (in_array($city,$cityArray) == FALSE) {
$cityArray[] = $city;
}
}
return $cityArray;
}
echo json_encode(strpos_all($cityPage, $_GET['term']));
?>
我最初尝试在file_get_contents之后使用json_decode,但我认为这真的会对性能造成不必要的影响,因为1) JSON文件太大,2)我并不真正关心它是否是JSON对象(这是正确的术语吗?)在PHP中,我可以像处理字符串一样轻松地处理它。
所以有三个问题:
提前感谢!
https://stackoverflow.com/questions/52323401
复制相似问题