0

I want to split a 4 digit number with 4 digit decimal .
Inputs:

Input 1 : 5546.263 
Input 2 : 03739.712  /*(some time may have one zero at first)*/

Result: (array)

Result of input 1 :  0 => 55 , 1 => 46.263
Result of input 2 :  0 => 37 , 1 => 39.712

P.S : Inputs is GPS data and always have 4 digit as number / 3 digit as decimal and some time have zero at first .

4

2 回答 2

2

您可以使用以下功能:

function splitNum($num) {
    $num = ltrim($num, '0');
    $part1 = substr($num, 0, 2);
    $part2 = substr($num, 2);
    return array($part1, $part2);
}

测试用例 1:

print_r( splitNum('5546.263') );

输出:

Array
(
    [0] => 55
    [1] => 46.263
)

测试用例 2:

print_r( splitNum('03739.712') );

输出:

Array
(
    [0] => 37
    [1] => 39.712
)

演示!

于 2013-10-18T19:06:13.977 回答
1

^0*([0-9]{2})([0-9\.]+)应该可以正常工作并做你想做的事:

$input = '03739.712';

if (preg_match('/^0*([0-9]{2})([0-9\.]+)/', $input, $matches)) {
    $result = array((int)$matches[1], (float)$matches[2]);
}

var_dump($result); //array(2) { [0]=> int(37) [1]=> float(39.712) }

正则表达式尸检:

  • ^- 字符串必须从这里开始
  • 0*- 字符 '0' 重复 0 次或更多次
  • ([0-9]{2})- 匹配 0 到 9 之间的数字的捕获组恰好重复 2 次
  • ([0-9\.]+)- 匹配 0 到 9 之间的数字或重复 1 次或多次的周期的捕获组

或者,您可以添加$到末尾以指定“字符串必须在此处结束”

注意:由于我们int在第一场比赛中施放了 an,您可以省略该0*部分,但如果您不打算施放,则将其保留。

于 2013-10-18T19:06:47.870 回答