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

荷兰语

输入字段通过AJAX连接到PHP,PHP连接到API,API返回艺术家和曲目名称结果。将其视为实时搜索功能。但是,API发送的膨胀需要过滤掉。

查询:
迈克尔·杰克逊·比利·简
结果:
迈克尔·杰克逊-比利·简
迈克尔·杰克逊-平稳刑事
各种艺术家-比利·简

结果存储在数组中。

如何过滤出其中没有所有搜索词的结果?结果2 en 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);

基本的正则表达式适用于第一个字符串。但是,它需要将所有字符串与数组值匹配。遍历tracks数组并在每个项目上执行preg_grep会向新数组添加许多重复项。

您可以动态地制作一个包含每个单词正向前瞻的正则表达式。您可以在这里了解正则表达式:https : //regex101.com/r/Qwjw3N/1

在PHP中,它看起来像这样:

$q = "michael jackson billie jean";
$strings = explode(' ', $q);
$tracks = [
  "Michael Jackson - Billie Jean",
  "Michael Jackson - Smooth Criminal",
  "Various artists - Billie Jean"
];

$regex = '^(?=.*' . implode(')(?=.*', $strings) . ').*$';

$matches = preg_grep('/' .$regex . '/i', $tracks);

var_dump($matches);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用GREP和正则表达式搜索多个字符串

正则表达式搜索多个字符串垃圾邮件

使用正则表达式在多个文件中计算多个字符串

正则表达式在字符串中查找(/替换)多个字符实例

多个字符串在正则表达式中具有特殊字符

用正则表达式替换文本中的多个字符串

列表中的正则表达式多个字符串C#

单个字符串中的多个正则表达式模式匹配

如何使用正则表达式提取多个字符串

使用正则表达式在单个字符串中选择多个变量

如何使用正则表达式匹配多个字符串?

如何使用正则表达式提取多个字符串?

如何使用单个正则表达式模式定位多个字符串

将正则表达式数组内嵌到单个字符串中

在嵌套文件/目录中使用正则表达式在一行中搜索多个字符串,并输出匹配的结果

Java正则表达式用于字符串中的多个字符串模式

使用正则表达式将字符串拆分为多个字符串

使用正则表达式在Android中将字符串拆分为多个字符串

多个正则表达式替换,会创建多个字符串吗?

正则表达式多个字符,但没有特定的字符串

正则表达式比较字符串数组的前n个字符

在没有正则表达式的情况下在多个文件中搜索一个字符串?

用多个字符串匹配整个世界的正则表达式

正则表达式匹配多个字符串,中间有char

正则表达式用于获取括号内的多个字符串

正则表达式匹配多个字符串

Postgres正则表达式查询以匹配多个字符串模式

正则表达式模式解析多个字符串

正则表达式运算符删除多个字符串