Php比较字符串并返回常用值

时间:2011-07-18 17:26:27

标签: php string compare

我试图找到关于此的其他帖子/信息,但它们似乎都没有用 - 虽然我确信这是一项简单的任务。

我有两个字符串,我想有一些代码行给我一个共同点。

例如,我可能有......

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

我想要一个只包含值Blue的字符串。我怎样才能做到这一点?提前谢谢!

3 个答案:

答案 0 :(得分:11)

您可以使用explodearray_intersect吗?

Demo here& here

<?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');

返回“Blue”;

编辑如果您愿意,请将其更新为包含不区分大小写的版本。

答案 1 :(得分:3)

解决方案是将字符串拆分为两个单词数组 - 例如使用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)

答案 2 :(得分:0)

你想在每个列表上做一个explode()把它们分成数组,然后使用array_intersect()来找到两个数组中的常用词。