5

PHPマニュアルをしばらく探していましたが、必要なコマンドを見つけることができませんでした。

キーと値を含む配列があります。例:

$Fields = array("Color"=>"Bl","Taste"=>"Good","Height"=>"Tall");

次に、次のような文字列があります。

$Headline = "My black coffee is cold";

ここで、配列($ Fields)の値のいずれかが文字列($ Headline)のどこかに一致するかどうかを調べたいと思います。

例:

Array_function_xxx($Headline,$Fields);

「bl」は文字列$Headlineに含まれているため(「Black」の一部として)、結果はtrueになります。

パフォーマンスが必要なので質問しています...これが不可能な場合は、代わりに独自の関数を作成します...

編集-私は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;
}

返される配列には、一致した各単語の開始位置と終了位置に関する情報が含まれています。

4

2 に答える 2

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
}

関数の名前を必要なものに置き換えます。

編集:

わかりました。代替ソリューション(おそらくパフォーマンスが向上し、大文字と小文字を区別しない検索が可能になりますが、$ fieldsパラメーター内に適切な値が必要です)は次のとおりです。

function Array_function_xxx($headline, $fields) {
    $regexp = '/(' . implode('|',array_values($fields)) . ')/i';
    return (bool) preg_match($regexp, $headline);
}
于 2011-05-08T13:20:00.117 に答える
1

http://www.php.net/manual/en/function.array-search.php それはあなたが探しているものです

php.netからの例

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>
于 2011-05-08T13:07:15.560 に答える