プロが教えるわが家の防犯対策術!

全角の数字が含まれた文字列を整数か小数かを判別して、
最後の余分な0を非表示にしたいです。
結果をこのようにさせたいです。

980.01 ←小数
3213.12 ←小数
3222.0003 ←小数
1000.2001 ←小数
2314 ←整数
1200.98 ←小数
2980 ←整数
2313.12 ←小数
3222.0003 ←小数
800 ←整数
4500 ←整数

<?php
$ary = array(
'980.0100',
'3213.1200',
'3222.0003',
'1000.2001',
'2314.0000',
'1200.9800',
'2980.0000',
'2313.1200',
'3222.0003',
'0800.0000',
'4500.0000'
);

$count = count($ary);

for($i=0; $i<$count; $i++){
$inputData = $ary[$i];
$hankaku = mb_convert_kana($inputData,'n',"utf-8");

if(!preg_match('/^0$|^-?[1-9][0-9]*$/', $hankaku)) {
echo $hankaku.' ←小数'.'<br>';
} else {
echo $hankaku.' ←整数'.'<br>';
}
}
?>

A 回答 (1件)

正規表現をつかうのが必須でないなら普通にキャストすればよいでしょう



<?php
$ary = array(
"980.0100",
"3213.1200",
"3222.0003",
"1000.2001",
"2314.0000",
"1200.9800",
"2980.0000",
"2313.1200",
"3222.0003",
"0800.0000",
"4500.0000"
);
foreach($ary as $val){
$num =(double) mb_convert_kana($val,"n","utf-8");
echo $num." ←".((int)$num==$num?"整数":"小数")."<br>";
}
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!