我有一个这样的字符串
$color="rgb(255, 255, 0)";
我想得到一个数组或三个不同变量中的值255255,0。例如
$arr[0]=255;
$arr[1]=255;
$arr[2]=0;
我认为可以用正则表达式来实现。但我不擅长。谢谢
如果它总是这样的格式,那么它应该在不使用正则表达式的情况下工作:
$color = str_replace(array('rgb(', ')', ' '), '', $color);
$arr = explode(',', $color);
我们使用str_replace()
来去掉不感兴趣的数据和空白,然后使用explode()
逗号上的字符串来给出您在$arr
中想要的输出数组格式。
我还将这个解决方案添加到了一个代码板中,这样你就可以看到运行它时会发生什么
使用此代码,您不必担心逗号和数字之间的额外空格
$data = "rgb(255, 255, 0)";
$data = "rgb( 255 , 255 , 0 )";
preg_match_all("/rgb's*'('s*('d+)'s*,'s*('d+)'s*,'s*('d+)'s*')/i", $data, $matches);
print("<PRE>");
var_dump($matches);
print("</PRE>");
$colors = array();
preg_match('/rgb *'( *('d+), *('d+), *('d+) *')/', $colors);
list( , $red, $green, $blue) = $colors;
<?php
$color="rgb(255, 255, 0)";
$color=explode('(',$color);
$color=explode(')',$color[1]);
$color=explode(', ',$color[0]);
echo $color[0]."<br>";
echo $color[1]."<br>";
echo $color[2]."<br>";
?>
请参见代码板示例。
<?php
$text = 'rgb(255, 255, 0)';
preg_match_all('/''d+/', $text, $matches);
print_r(reset($matches));
?>
edit使用reset((函数