Я попытался найти другие сообщения / информацию об этом, и никто из них не работает, хотя я уверен, что это простая задача.
У меня две строки, и я хотел бы иметь некоторые строки кода, которые дают мне слово, что у них есть общее.
Например, у меня может быть …
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 (), чтобы найти общие слова в обоих массивах.