Intereting Posts

PHP сравнивает строки и возвращает общие значения

Я попытался найти другие сообщения / информацию об этом, и никто из них не работает, хотя я уверен, что это простая задача.

У меня две строки, и я хотел бы иметь некоторые строки кода, которые дают мне слово, что у них есть общее.

Например, у меня может быть …

String1 = "Product Name - Blue"; String2 = "Blue Green Pink Black Orange"; 

И я хотел бы иметь строку, содержащую только значение Blue. Как я могу это сделать? Заранее спасибо!

Вы можете использовать explode и array_intersect, может быть?

Демо здесь и здесь

 <?php function common($str1,$str2,$case_sensitive = false) { $ary1 = explode(' ',$str1); $ary2 = explode(' ',$str2); if ($case_sensitive) { $ary1 = array_map('strtolower',$ary1); $ary2 = array_map('strtolower',$ary2); } return implode(' ',array_intersect($ary1,$ary2)); } echo common('Product Name - Blue','Blue Green Pink Black Orange'); 

Возвращает «Синий»;

EDIT Обновлено, чтобы включить версию без учета регистра, если вы хотите.

Решение состояло бы в том, чтобы разделить ваши строки на два массива слов – используя explode() , например:

 $string1 = "Product Name - Blue"; $string2 = "Blue Green Pink Black Orange"; $arr1 = explode(' ', $string1); $arr2 = explode(' ', $string2); 

Обратите внимание, что explode() является основным решением; вы можете использовать что-то более сложное, например preg_split() , что позволяет использовать более конкретные разделители.

И затем, чтобы использовать array_intersect() на этих массивах, чтобы узнать, какие слова присутствуют в обоих:

 $common = array_intersect($arr1, $arr2); var_dump($common); 

Который в этом случае дал бы:

 array 3 => string 'Blue' (length=4) 

Вы хотите сделать explode () в каждом списке, чтобы разделить их на массивы, затем используйте array_intersect (), чтобы найти общие слова в обоих массивах.