1

preg_match コードに問題があるようです。「3.25」のような文字列から 10 進数を取得しようとしていますが、代わりに「1」を取得します。

preg_match('/[0-9]+(?:\.[0-9]*)?/', '£3.25', $matches);
echo 'match: '.$matches[0];

「1」を出力します

4

3 に答える 3

2
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

于 2012-04-29T11:15:43.920 に答える
1

まず、配列のインデックス1にある値を見つけます($matches[1]

そのようなことを試してください:

<?php
preg_match('/[0-9]+\.([0-9]+)/', '£3.25', $matches);
print_r($matches);
?>

それは与える:

Array
(
    [0] => £3.25
    [1] => 25
)
于 2012-04-29T11:08:05.273 に答える
0

このテスターサイトで小数の問題を再現できます:http:
//www.pagecolumn.com/tool/pregtest.htm

エスケープされたドットをドットを含む文字クラスに置き換えると、次のように機能します。

[0-9]+(?:[.][0-9]*)?

ところで:ドットは表示されますが、その後に数字が表示されない可能性はありますか?
そうでない場合は、の[0-9]*いずれか[0-9]+または予想される特定の桁数に置き換えます[0-9]{2}

于 2012-04-29T13:34:25.573 に答える