我知道使用stripos()
我可以搜索字符串,如果此字符串包含我想要的变量,return 'xx';
看看以下4个字符串:
Power Red/Collegiate Burgundy
Prism Pink,Racer Pink,Mist Blue,Prism Pink
Red/Vintage White/Gold Metallic
Sail,Pure Platinum,University Red,Obsidian
所以这些都是'颜色'变化,我有大约3000种变体。
有些关键字总是会返回,例如Red
,Blue
,Burgundy
等等。
我想要完成的是:
if (stripos($color_string, 'Red') !== false) {
return 'Red';}
但这有一个问题。使用上面的代码会在包含Red
的所有字符串上返回Red
。
我想要的是:
字符串Power Red/Collegiate Burgundy/Black Hard/Silver Paradise
必须返回Red, Black, Burgundy, Silver
。
条带输入将由我提供,包含所有不同的颜色变化。我希望我能够很好地解释这个问题!感谢
答案 0 :(得分:0)
用explode()
拆分字符串,然后循环遍历该字符串以返回所有颜色匹配。您可以使用正则表达式而不是stripos()
。
$string = 'Power Red/Collegiate Burgundy/Black Hard/Silver Paradise';
$array = explode('/', $string);
$colors = array_map(function($s) {
if (preg_match('/red|blue|black|burgundy|silver|pink/i', $s, $match)) {
return $match[0];
}
}, $array);
print_r($colors);