我试图找到关于此的其他帖子/信息,但它们似乎都没有用 - 虽然我确信这是一项简单的任务。
我有两个字符串,我想有一些代码行给我一个共同点。
例如,我可能有......
String1 = "Product Name - Blue";
String2 = "Blue Green Pink Black Orange";
我想要一个只包含值Blue的字符串。我怎样才能做到这一点?提前谢谢!
答案 0 :(得分:11)
您可以使用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');
返回“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()来找到两个数组中的常用词。