Php сравнивает строки и возвращает общие значения - PullRequest
3 голосов
/ 18 июля 2011

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

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 18 июля 2011

Вы можете использовать взорвать и 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');

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

РЕДАКТИРОВАТЬ Обновлен, чтобы включить версию без учета регистра, если вы хотите.

3 голосов
/ 18 июля 2011

Решением было бы разделить ваши строки на два массива слов - используя 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)
0 голосов
/ 18 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...