字符串中的PHP数组值?

Max*_*and 5 php arrays string-search

我一直在PHP手册中查找一段时间,找不到任何能够满足我想要的命令.

我有一个包含键和值的数组,例如:

$Fields = array("Color"=>"Bl","Taste"=>"Good","Height"=>"Tall");
Run Code Online (Sandbox Code Playgroud)

然后我有一个字符串,例如:

$Headline = "My black coffee is cold";
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否有任何数组($ Fields)值匹配字符串中的某个位置($ Headline).

例:

Array_function_xxx($Headline,$Fields);
Run Code Online (Sandbox Code Playgroud)

将结果设为true,因为"bl"在字符串$ Headline中(作为"Black"的一部分).

我问,因为我需要表现......如果这是不可能的,我会做出自己的功能......

编辑 - 我正在寻找像stristr(string $ haystack,array $ needle);

谢谢

解决方案 - 我想出了他的功能.

function array_in_str($fString, $fArray) {

  $rMatch = array();

  foreach($fArray as $Value) {
    $Pos = stripos($fString,$Value);
    if($Pos !== false)
      // Add whatever information you need
      $rMatch[] = array( "Start"=>$Pos,
                         "End"=>$Pos+strlen($Value)-1,
                         "Value"=>$Value
                       );
  }

  return $rMatch;
}
Run Code Online (Sandbox Code Playgroud)

返回的数组现在具有关于每个匹配的单词的开始和结束位置的信息.

Tad*_*eck 5

这应该有所帮助:

function Array_function_xxx($headline, $fields) {
    $field_values = array_values($fields);
    foreach ($field_values as $field_value) {
        if (strpos($headline, $field_value) !== false) {
            return true; // field value found in a string
        }
    }
    return false; // nothing found during the loop
}
Run Code Online (Sandbox Code Playgroud)

将功能的名称替换为您需要的名称.

编辑:

好的,替代解决方案(可能提供更好的性能,允许不区分大小写的搜索,但在$ fields参数中需要适当的值)是:

function Array_function_xxx($headline, $fields) {
    $regexp = '/(' . implode('|',array_values($fields)) . ')/i';
    return (bool) preg_match($regexp, $headline);
}
Run Code Online (Sandbox Code Playgroud)