preg_match コードに問題があるようです。「3.25」のような文字列から 10 進数を取得しようとしていますが、代わりに「1」を取得します。
preg_match('/[0-9]+(?:\.[0-9]*)?/', '£3.25', $matches);
echo 'match: '.$matches[0];
「1」を出力します
preg_match コードに問題があるようです。「3.25」のような文字列から 10 進数を取得しようとしていますが、代わりに「1」を取得します。
preg_match('/[0-9]+(?:\.[0-9]*)?/', '£3.25', $matches);
echo 'match: '.$matches[0];
「1」を出力します
preg_match('#\d+(?:\.\d{1,2})?#', '£2.35', $match);
var_dump($match);
与える
array(1) {
[0]=>
string(4) "2.35"
}
PHP 5.2でも:http://codepad.viper-7.com/9nFhET
まず、配列のインデックス1にある値を見つけます($matches[1]
)
そのようなことを試してください:
<?php
preg_match('/[0-9]+\.([0-9]+)/', '£3.25', $matches);
print_r($matches);
?>
それは与える:
Array
(
[0] => £3.25
[1] => 25
)
このテスターサイトで小数の問題を再現できます:http:
//www.pagecolumn.com/tool/pregtest.htm
エスケープされたドットをドットを含む文字クラスに置き換えると、次のように機能します。
[0-9]+(?:[.][0-9]*)?
ところで:ドットは表示されますが、その後に数字が表示されない可能性はありますか?
そうでない場合は、の[0-9]*
いずれか[0-9]+
または予想される特定の桁数に置き換えます[0-9]{2}