2013-11-28 3 views
0

У меня есть массив из 4 строк. Как я могу проверить, есть ли ЛЮБОЙ из них в строке, а затем вернуть истинное значение, если ЛЮБЫЕ найдены в строке.Строка проверки 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!"; 
} 

Running Код: 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); 
Смежные вопросы