2013-11-28 15 views
0

我有一個說4個字符串的數組。我如何檢查它們中的任何一個是否在字符串中,如果在字符串中找到ANY,則返回一個真值。任何數組項目的PHP檢查字符串

已嘗試strpos()但爲此,針必須是字符串或整數,並且不能是數組。

除了通過數組循環檢查每個數組項之外,是否存在不區分大小寫的方式?

示例文本:

$string = "A rural position on a working dairy farm but within driving distance 
of the sea and local villages, also sharing an indoor pool"; 

$arr = array("farm", "Working farm", "swimming pool", "sea views"); 
+1

如何使用'foreach'和驗證上的值通過數組迭代? –

回答

2

最好的辦法是遍歷針的陣列,並檢查它是否在字符串中發現:

function stripos_a($arr, $string) { 
    foreach ($arr as $search) { 
     if (stripos($string, $search) !== false) return true; 
    } 
    return false; 
} 

測試:

var_dump(stripos_a($arr, $string)); // bool(true) 

Demo.

+0

謝謝,這確實很好:) - @ amal-murali –

0

含有類似功能...

foreach ($arr as $value) { 
    if (strpos($string, $value)) { return true;} 
} 
return false; 
1

檢查了這一點:

$string = "A rural position on a working dairy farm but within driving distance of the sea and local villages, also sharing an indoor pool"; 
$arr = array("farm", "Working farm", "swimming pool", "sea views"); 

$exploded = explode(' ', $string); 
foreach ($arr as $query) { 
    if (in_array($query, $exploded)) 
    echo "<br/>{$query} founded!"; 
} 

運行代碼:http://sandbox.onlinephpfunctions.com/code/79f47f7ca4d6b9d1617487ccccc11104f107ae66

0
function searchWords($string,$words) 
{ 
    foreach($words as $word) 
    { 
     if(stristr($string," " . $word . " ")) //spaces either side to force a word 
     { 
      return true; 
     } 
    } 
    return false; 
} 

用法

$string = 'A rural position on a working dairy farm but within driving distance of the sea and local villages, also sharing an indoor pool'; 
$searchWords = array("farm", "Working farm", "swimming pool", "sea views"); 

if(searchWords($string,$searchWords)) 
{ 
    //matches 
} 
1

試試這個:

$string = "A rural position on a working dairy farm but within driving distance of the sea and local villages, also sharing an indoor pool"; 
$arr = array("farm", "Working farm", "swimming pool", "sea views"); 

$match = (bool) preg_match("/(".join("|", $arr).")/i", $string); 

var_dump($match); 
相關問題