在变量中搜索,根据搜索返回'string,string2'

时间:2017-07-13 13:37:08

标签: php

我知道使用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种变体。

有些关键字总是会返回,例如RedBlueBurgundy等等。

我想要完成的是:

if (stripos($color_string, 'Red') !== false) {
return 'Red';}

但这有一个问题。使用上面的代码会在包含Red的所有字符串上返回Red

我想要的是:

字符串Power Red/Collegiate Burgundy/Black Hard/Silver Paradise必须返回Red, Black, Burgundy, Silver

条带输入将由我提供,包含所有不同的颜色变化。我希望我能够很好地解释这个问题!感谢

1 个答案:

答案 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);

DEMO