如果我有<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
这是最好的方法吗?
答案 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);
参考
答案 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];