2016-06-10 3 views
-1

Я пытаюсь изменить строку (города), которая содержит значение из массива (имена городов).поиск в массиве для строки

Код:

for ($i=0; $i<$1000; $i++) { 

$cities = "I live in Prag"; 
$array = array("Wien","Prag","Berlin"); 
foreach ($array AS $val) { 

     if (preg_match("/".$val."/", $cities)) { 
     $cities = str_replace($val, ", " . $val. ", ", $cities);  
     } 
    } 
} 

есть другое решение?

благодаря

+0

это строка всегда так? Что означает имя города с заглавной буквой? – Andreas

+0

Я не уверен, в чем ваш вопрос? Работает ли код? Обычно обычно бывает несколько способов сделать определенные вещи. – Epodax

+0

странная замена ... какое значение должно заменить «Prag»? – RomanPerekhrest

ответ

0

Вот простое решение с использованием preg_replace и implode функции:

$cities = "I live in Prag but love Wien"; 
$array = array("Wien","Prag","Berlin"); 
$cities = preg_replace("/\b". implode("|", $array) ."\b/", ',$0,', $cities); 

print_r($cities); // "I live in ,Prag, but love ,Wien," 
0

Если вам нужно найти ключи от значений, которые соответствуют критериям, то вам нужно перебрать массив, так что используйте как это.

$example = array('An example','Another example','One Example','Last example'); 
$searchword = 'last'; 
$matches = array(); 
foreach($example as $k=>$v) { 
    if(preg_match("/\b$searchword\b/i", $v)) { 
     $matches[$k] = $v; 
    } 
} 
+0

Я пробую пример из Гораха! – Erik

0

Я думаю ...

$cities = "I live in Prag"; 
$array = array("Wien","Prag","Berlin"); 
foreach ($array AS $val) { 

    $cities = preg_replace("/(.*)(" . $val . ")(.*)/", "$1, $2, $3", $cities); 
} 

Echo $cities; 

Может это сделать.

Редактировать рабочий пример: https://3v4l.org/0eDDW

+0

Я думаю, что пример из Гораха может быть решением, в котором я нуждаюсь. Но наоборот, а именно города в массиве - это строки, которые должны быть найдены в переменных городах. – Erik

+0

@ Erik So ?? Что это связано с моим ответом? Разве мой ответ не правильный? – Andreas

+0

Он может работать с несколькими совпадениями https://3v4l.org/HlS9a – Andreas