Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中从字符串中获取颜色?_Php - Fatal编程技术网

如何在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>");