输入字段通过 AJAX 连接到 PHP,PHP 连接到 API,该 API 返回艺术家和曲目名称结果。将其视为实时搜索功能。然而,API 会发送需要过滤掉的膨胀。
询问:
迈克尔·杰克逊比利·琼
结果:
迈克尔杰克逊 - 比莉简
迈克尔杰克逊 - 流畅的罪犯
各种艺术家 - 比利·简
结果存储在一个数组中。
如何过滤掉没有包含所有搜索词的结果?在这种情况下,结果 2 和 3。
我尝试使用preg_grep但它搜索 1 个字符串。
$q = $_GET['q']; //michael jackson billie jean
$strings = explode(' ', $q);
$tracks = [
"Michael Jackson - Billie Jean",
"Michael Jackson - Smooth Criminal",
"Various artists - Billie Jean"
];
$matches = preg_grep('/' . $strings[0] . '/i', $tracks);
基本正则表达式适用于第一个字符串。但是它需要将所有字符串与数组值匹配。循环遍历轨道数组并对每个项目执行 preg_grep 会向新数组添加许多重复项。