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

时间:2015-07-10 13:13:19

标签: php arrays

我有一个像array("red","blue","azure"...)这样的数组,我有一个可能包含一些单词的字符串。任务是获取给定字符串中所有匹配颜色的数组。

字符串示例:"红狐狸遇到蓝鲸"。它应该输出["红色","蓝色"]

给我一​​个起点继续。

谢谢, 马尔蒂阿赫

5 个答案:

答案 0 :(得分:6)

str_word_count() format参数12,然后是array_intersect() ....但请注意区分大小写,强制它全部小写第一

$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);

Demo

答案 1 :(得分:1)

如果您将要查找的所有值都放入数组中,请使用' |'作为分隔符,您可以在正则表达式中使用它来匹配所有值。

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

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

var_dump($matches);

答案 2 :(得分:0)

试试这个



<?php

$array1=array("red","blue","azure") ;
$str="red fox met a blue whale";
$str=explode(" ",$str);

echo $array1[0];
for($i=0;$i<sizeof($array1);$i++){
	
	if (in_array($array1[$i],$str)){
$words[]=$array1[$i];

}

	}
print_r($words)

?>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

编辑:

我发现我需要它更复杂。有可能这样做:

1)让我们找到数组中存在的所有颜色2)使用另一个数组将颜色翻译成其他语言

原始阵列[&#34;红色&#34;,&#34;蓝色&#34;,&#34;绿色&#34;]翻译阵列[&#34; punane&#34;,&#34; sinine& #34;&#34; roheline&#34;]

所以来自&#34;红狐狸遇到了蓝鲸&#34;我需要得到[&#34; punane&#34;,&#34; sinine&#34;]

谢谢,Martti

答案 4 :(得分:0)

这是使用匹配的已翻译数组

翻译已过滤项目的代码
  foreach($filteredArray as $key => $value) {
      $myTranslatedColors[] = $translatedArray[$key]; 
    }

谢谢大家。