如何在php中从字符串中获取颜色?
我有一根这样的绳子如何在php中从字符串中获取颜色?,php,Php,我有一根这样的绳子 $color="rgb(255, 255, 0)"; 我想在数组或三个不同的变量中获取值255255,0。例如 $arr[0]=255; $arr[1]=255; $arr[2]=0; 我想可以用正则表达式来实现。但我做得不好。谢谢如果它始终是该格式,则不使用正则表达式即可: $colors = array(); preg_match('/rgb *\( *(\d+), *(\d+), *(\d+) *\)/', $colors); list( , $red, $gree
$color="rgb(255, 255, 0)";
我想在数组或三个不同的变量中获取值255255,0。例如
$arr[0]=255;
$arr[1]=255;
$arr[2]=0;
我想可以用正则表达式来实现。但我做得不好。谢谢如果它始终是该格式,则不使用正则表达式即可:
$colors = array();
preg_match('/rgb *\( *(\d+), *(\d+), *(\d+) *\)/', $colors);
list( , $red, $green, $blue) = $colors;
$color = str_replace(array('rgb(', ')', ' '), '', $color);
$arr = explode(',', $color);
我们使用str_replace()
去掉不感兴趣的数据和空白,然后explode()
逗号上的字符串,给出您希望在$arr
中使用的输出数组格式
我还添加了这个,这样您就可以看到运行它时发生了什么。
<?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>";
?>
参见示例。
使用reset()函数进行编辑使用这段代码,您不必担心逗号和数字之间的额外空格
$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>");
$data=“rgb(255,255,0)”;
$data=“rgb(255,255,0)”;
preg\u match\u all(“/rgb\s*”(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*)/i“,$data,$matches);
打印(“”);
var_dump($matches);
打印(“”);
您需要使用reset()
或current()
来获得正确的输出格式。您知道css颜色表达式也可能包含比率,或者是rgba()
格式?@mario我不知道,但实际上您是对的。此输入实际上来自$('#right')。css('background-color'))
那么为什么这一点被否决了呢?该准则起作用并回答了提出的问题。
$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>");