我怎么会得到< 246.64260,167.12500,24.62500>在分离变量?

时间:2011-03-01 11:19:01

标签: php

如果我有<246.64260, 167.12500, 24.62500>,则每个数字可以是1到256.我需要将其输入$ X为246,$ Y为167,$ Z为24

我该怎么做?我正在考虑删除所有空格,然后它们爆炸以获得

X 246.64260
Y 167.12500
Z 24.62500

然后再次爆炸得到 X 246 Y 167 Z 24

这是最好的方法吗?

5 个答案:

答案 0 :(得分:7)

$input  = '<246.64260, 167.12500, 24.62500>';
$output = str_replace(array('<','>',' '), '', $input);
$output = explode(',', $output);
$output = array_map('intval', $output);

list($X, $Y, $Z) = $output;

答案 1 :(得分:3)

$string  = '<246.64260, 167.12500, 24.62500>';
$str_esc = str_replace(array('<','>',' '), '', $string );
$output = explode(',', $str_esc);
$output = array_map('intval', $output);
echo "<pre>";
print_r($output);

参考

  1. array_map

  2. intval

答案 2 :(得分:1)

$str = '<246.64260, 167.12500, 24.62500>';
$str = substr(1, strlen(trim($str)) - 1);

$array = explode(',' , $str);
$array = array_map('intval', $array);

list($X, $Y, $Z) = $array;

答案 3 :(得分:1)

我要打击你的想法并在一行中轻松完成(如果算上字符串则为两行):

$str = '<246.64260, 167.12500, 24.62500>';
list( $X, $Y, $Z ) = array_map( 'intval', explode( ',', trim( $str, '<>' ) ) );

这将trim关闭领先的GT和LT字符,然后explode使用逗号将数字放入数组中。 Leading whitespace (surprisingly) doesn't matter with intval因此只需将其映射到已分隔的数组,然后将结果separated放入您要求的$X$Y$Z变量中。< / p>

答案 4 :(得分:0)

可能不是最有效的方法,但您可以使用preg_match_all将截断的整数值放入2D数组中,然后将其移动到X,Y和Z.

类似于:

$input = "<246.64260, 167.12500, 24.62500>";
$matches = array();
preg_match_all("([0-9]+)\.[0-9]+", $input, $matches);
$x = $matches[0][0];
$y = $matches[1][0];
$z = $matches[2][0];