我想用4位小数除以4位数。
输入:
Input 1 : 5546.263
Input 2 : 03739.712 /*(some time may have one zero at first)*/结果:(数组)
Result of input 1 : 0 => 55 , 1 => 46.263
Result of input 2 : 0 => 37 , 1 => 39.712输入是GPS数据,总有4位数字作为小数/3位数字作为小数点,有些时候开始时为0。
发布于 2013-10-18 19:06:13
您可以使用以下函数:
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-18 19:06:47
^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) }Regex尸检:
^ -字符串必须从这里开始0* -字符'0‘重复0次或更多次([0-9]{2}) -一个在0到9之间匹配一个数字的捕获组,正好重复2次。([0-9\.]+) -一个捕捉组,它匹配0到9之间的数字或重复1次或多次的句点。还可以将$添加到末尾,以指定“字符串必须在此结束”。
Note__:由于我们在第一次匹配中转换为int,所以可以省略0*部分,但是如果计划不进行转换,那么将其留在其中。
https://stackoverflow.com/questions/19457152
复制相似问题