Php 查找字符串中与多个数组键匹配的所有单词

Php 查找字符串中与多个数组键匹配的所有单词,php,arrays,Php,Arrays,我有一个类似于数组(“红色”、“蓝色”、“azure”…)的数组,还有一个可能包含一些单词的字符串。任务是从给定字符串中获取所有匹配颜色的数组 字符串示例:“红狐遇到蓝鲸”。它应该输出[“红色”、“蓝色”] 给我一个出发点 谢谢, Martti如果将要查找的所有值放入一个数组中,并使用“|”作为分隔符,则可以在正则表达式中使用它来匹配所有值 $valsArray = implode('|',$vals); preg_match_all('/($valsArray)/',$string,$mat

我有一个类似于
数组(“红色”、“蓝色”、“azure”…)
的数组,还有一个可能包含一些单词的字符串。任务是从给定字符串中获取所有匹配颜色的数组

字符串示例:“红狐遇到蓝鲸”。它应该输出[“红色”、“蓝色”]

给我一个出发点

谢谢,
Martti

如果将要查找的所有值放入一个数组中,并使用“|”作为分隔符,则可以在正则表达式中使用它来匹配所有值

$valsArray = implode('|',$vals);

preg_match_all('/($valsArray)/',$string,$matches);

var_dump($matches);

如果将要查找的所有值放入一个数组中,并使用“|”作为分隔符,则可以在正则表达式中使用它来匹配所有值

$valsArray = implode('|',$vals);

preg_match_all('/($valsArray)/',$string,$matches);

var_dump($matches);
使用
format
参数
1
2
,然后。。。。但要注意区分大小写,请先将其全部改为小写

$matchWords = array("red","blue","azure");
$sentence = "Red fox met a blue whale";

$result = array_intersect(
    $matchWords,
    str_word_count(strtolower($sentence), 1)
);

var_dump($result);
使用
格式
参数
1
2
,然后。。。。但要注意区分大小写,请先将其全部改为小写

$matchWords = array("red","blue","azure");
$sentence = "Red fox met a blue whale";

$result = array_intersect(
    $matchWords,
    str_word_count(strtolower($sentence), 1)
);

var_dump($result);
试试这个

试试这个

编辑:

我想我需要它更复杂一些。可以这样做吗:

1) 让我们从字符串中找到数组中存在的所有颜色2)使用另一个数组将颜色转换为其他语言

原始数组[“红”、“蓝”、“绿”]翻译数组[“普那”、“辛那”、“罗赫林”]

所以从“红狐遇见蓝鲸”我需要得到[“punane”,“sinine”]

谢谢,Martti编辑:

我想我需要它更复杂一些。可以这样做吗:

1) 让我们从字符串中找到数组中存在的所有颜色2)使用另一个数组将颜色转换为其他语言

原始数组[“红”、“蓝”、“绿”]翻译数组[“普那”、“辛那”、“罗赫林”]

所以从“红狐遇见蓝鲸”我需要得到[“punane”,“sinine”]

谢谢,玛蒂,伙计们

这是使用匹配的转换数组转换过滤项的代码

  foreach($filteredArray as $key => $value) {
      $myTranslatedColors[] = $translatedArray[$key]; 
    }
谢谢大家。

各位

这是使用匹配的转换数组转换过滤项的代码

  foreach($filteredArray as $key => $value) {
      $myTranslatedColors[] = $translatedArray[$key]; 
    }

谢谢大家。

这很好,但普雷维乌斯也一样。为什么这一个更好?这一点很好,但普雷维乌斯也一样。为什么这个更好?