【发布时间】:2011-07-18 17:26:26
【问题描述】:
我已尝试查找有关此的其他帖子/信息,但它们似乎都不起作用 - 尽管我确信这是一项简单的任务。
我有两个字符串,我想要一些代码行来告诉我它们的共同点。
例如,我可能有...
String1 = "Product Name - Blue";
String2 = "Blue Green Pink Black Orange";
我想要一个只包含值 Blue 的字符串。我怎样才能做到这一点?提前致谢!
【问题讨论】:
我已尝试查找有关此的其他帖子/信息,但它们似乎都不起作用 - 尽管我确信这是一项简单的任务。
我有两个字符串,我想要一些代码行来告诉我它们的共同点。
例如,我可能有...
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');
返回“蓝色”;
编辑如果您愿意,可以将其更新为包含不区分大小写的版本。
【讨论】:
一种解决方案是将字符串拆分为两个单词数组——例如使用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() 查找两个数组中的共同词。
【讨论】: