У меня есть строка, подобная этой
$color="rgb(255, 255, 0)";
Я хочу получить значения 255,255,0 либо в массиве, либо в трех разных переменных. Например, для
$arr[0]=255; $arr[1]=255; $arr[2]=0;
Я думаю, что это можно сделать в регулярном выражении. Но я в этом плохой. благодаря
Если он всегда находится в этом формате, тогда это должно работать без использования регулярного выражения:
$color = str_replace(array('rgb(', ')', ' '), '', $color); $arr = explode(',', $color);
Мы используем str_replace()
чтобы 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 ()