Выбор слов из строки в соответствии с массивом

Я хочу выбрать определенные слова из предложения в соответствии с моим списком массивов

$sentence = "please take this words only to display in my browser"; $list = array ("display","browser","words","in"); 

Я хочу, чтобы результат был так же, как «отображение слов в браузере»

пожалуйста, помогите мне с этим. СПАСИБО

Интересно, сделает ли это один лайнер:

echo join(" ", array_intersect($list, explode(" ",$sentence)));

Используйте на свой риск 🙂

edit: yay, он выполняет эту работу, просто проверял

Вы можете сделать это с помощью preg_match:

 $sentence = "please take this words only to display in my browser"; $list = array ("display","browser","words","in"); preg_match_all('/\b'.implode('\b|\b', $list).'\b/i', $sentence, $matches) ; print_r($matches); 

Вы получите слова в порядке

 Array ( [0] => Array ( [0] => words [1] => display [2] => in [3] => browser ) ) 

Но будьте осторожны с регулярными выражениями, если текст не так прост.

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

 $words = explode(" ", $sentence); $new_sentence_array = array(); foreach($words as $word) { if(in_array($word, $list)) { $new_sentence_array[] = $word; } } $new_sentece = implode(" ", $new_sentence_array); echo $new_sentence; 

Я думаю, вы могли бы искать строку для каждого значения в массиве и назначать ее новому массиву со значением strpos в качестве ключа; что даст вам сортируемый массив, который вы можете вывести в том порядке, в котором условия появятся в строке. См. Ниже или пример .

 <?php $sentence = "please take this words only to display in my browser"; $list = array ("display","browser","words","in"); $found = array(); foreach($list as $k => $v){ $position = strpos(strtolower($sentence), strtolower($v)); if($position){ $found[$position] = $v; } } ksort($found); foreach($found as $v){ echo $v.' '; } ?> 
 $narray=array(); foreach ($list as $value) { $status=stristr($sentence, $value); if ($status) { $narray[]=$value; } } echo @implode(" ",$narray);