使用正则表达式在数组中搜索多个字符串

输入字段通过 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 会向新数组添加许多重复项。


郎朗坤
浏览 190回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP