2011-11-28 85 views
3

我有这样
一些方法来从PHP中的字符串获取颜色?

$color="rgb(255, 255, 0)"; 

我想无论是在一个阵列或三个不同的变量值255,255,0的字符串。例如

$arr[0]=255; 
$arr[1]=255; 
$arr[2]=0; 

我认为可以在正则表达式中完成。但我不好。由于

+0

你知道CSS颜色表达式也可能包含比率,或者是'rgba()'格式? – mario

+0

@mario我不知道,但实际上你是正确的这个输入实际上来自$('#right')。css('background-color')' –

回答

6

如果它始终是在格式,那么这应该不使用正则表达式的工作:

$color = str_replace(array('rgb(', ')', ' '), '', $color); 
$arr = explode(',', $color); 

我们使用str_replace()剥离出来的无趣的数据和空白,然后explode()上逗号串给你在$arr你想要的输出数组格式。

我也加了这个solution to a codepad所以你可以看到当你运行它时会发生什么。

+0

感谢它的工作。感谢帮助。 –

+0

那么,为什么这是downvoted?代码工作并回答提出的问题。 – Treffynnon

3
$colors = array(); 
preg_match('/rgb *\(*(\d+), *(\d+), *(\d+) *\)/', $colors); 
list(, $red, $green, $blue) = $colors; 
1
<?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>"; 
?> 

请参阅codepad示例。

1
<?php 
$text = 'rgb(255, 255, 0)'; 
preg_match_all('/\\d+/', $text, $matches); 
print_r(reset($matches)); 
?> 

编辑随着复位()函数

+0

您需要使用reset()或current()来获得正确的输出格式。 – Treffynnon

4

有了这个代码,您不必担心逗号和数字之间多余的空格

$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>"); 
相关问题