【问题标题】:Php compare strings and return common valuesphp比较字符串并返回常用值
【发布时间】:2011-07-18 17:26:26
【问题描述】:

我已尝试查找有关此的其他帖子/信息,但它们似乎都不起作用 - 尽管我确信这是一项简单的任务。

我有两个字符串,我想要一些代码行来告诉我它们的共同点。

例如,我可能有...

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

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

【问题讨论】:

    标签: php string compare


    【解决方案1】:

    您可以使用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”的两个实例都以大写字母 b 开头,那不是有效吗?听起来他可能需要创建自己的函数来模仿 array_intersect 但不区分大小写。编辑:看来您进行了编辑以解决此问题。干得好。
    • 是的,小写加法很有用。你知道有什么方法可以增加检查一段词的能力吗?例如:而不是 blue,匹配类似 purple owl? 的东西
    • @thepristinedesign:你能给出两个字符串示例和期望的结果吗?
    • String1 = "NVEY - 口红(柔和的珊瑚粉)"; String2 = "柔和的珊瑚粉色、style2、style3 等..";期望的结果是 -> 柔和的珊瑚粉色
    • @theprestinedesign:第二个字符串总是 CSV 吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您想对每个列表执行explode() 将它们分成数组,然后使用array_intersect() 查找两个数组中的共同词。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        相关资源
        最近更新 更多