如何搜索 XML 负载?

问题描述 投票:0回答:5

我正在尝试向网站添加一些快速且简单的搜索功能。该网站有一个包含所有商店的 XML 文件,我想创建一个搜索框来按城镇或邮政编码搜索距离用户最近的商店。

我已将所有数据放入一个数组中,但据我所知,无法像使用 MySQL LIKE 查询那样“搜索”数组(不是 array_search)来检索结果。

一定有办法吗?在这种情况下,使用 MySQL 不是一个选择。

php xml
5个回答
3
投票

三个选项:

  • 由于您的源是 XML,因此您可以使用 QueryPath 或 phpQuery 来过滤初始数据集。
  • 如果 MySQL 不是一个选项,如果您确实想使用 LIKE,您仍然可以使用 SQLite 内存数据库。
  • 或者经过时间考验且最简单:只需手动循环数组并进行手动比较。

2
投票

您可以尝试使用 *array_filter()* 和用户定义的回调。


2
投票

我认为最好的选择是将 XML 实际加载到 DOM 对象(DOMDocument 或 SimpleXML)中,然后使用其 XPath 实现。它不是 SQL,但比编写自己的消耗数组的算法要少得多。特别是如果您正在谈论像使用 SQL 平台一样执行实际距离计算。


1
投票

我认为您正在寻找类似 LINQ 的东西,但在 PHP 环境中。不幸的是我不知道有这样的解决方案。我能看到的最佳解决方案是使用 foreach 和您自己的搜索参数进行自定义搜索。或者只是将信息存储在 SQL 中并避免尝试模拟它。


0
投票

你可以尝试这样的事情:

$q = $_GET['search'];

$file = new DOMDocument();
$file->load("filename.xml");

$xml = simplexml_import_dom($file);
foreach($xml->store as $store) 
{
  $store_name = $store->name;
  if($q == $store_name)
  {
    //query in your database
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.