【发布时间】:2019-07-22 23:22:32
【问题描述】:
输入字段通过 AJAX 连接到 PHP,PHP 连接到返回艺术家和曲目名称结果的 API。将其视为实时搜索功能。然而,API 会发送需要过滤掉的臃肿。
询问: 迈克尔杰克逊比莉让 结果: 迈克尔·杰克逊 - 比莉·简 迈克尔杰克逊 - 流畅的罪犯 各种艺术家 - Billie Jean结果存储在一个数组中。
如何过滤掉没有包含所有搜索词的结果?在这种情况下,结果 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);
基本的正则表达式适用于第一个字符串。但是,它需要将所有字符串与数组值匹配。 循环遍历 track 数组并对每个项目执行 preg_grep 会将许多重复项添加到新数组中。
【问题讨论】: