簡體   English   中英

字符串中的PHP數組值?

[英]PHP Array values in string?

我在PHP手冊中已經尋找了一段時間,找不到任何可以滿足我要求的命令。

我有一個包含鍵和值的數組,例如:

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

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

$Headline = "My black coffee is cold";

現在,我想確定是否有任何數組($ Fields)值與字符串($ Headline)中的某處匹配。

例:

Array_function_xxx($Headline,$Fields);

將給出正確的結果,因為字符串$ Headline中包含“ bl”(作為“ 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;
}

現在,返回的數組具有有關每個匹配單詞的開始和結束位置的信息。

這應該有助於:

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

http://www.php.net/manual/zh/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;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM