3
function get_only_numbers($string){
    $getonly = str_split("0123456789");
    $string = str_split($string);
    foreach($string as $i => $c){
        if(!in_array($c, $getonly))
            unset($string[$i]);
    }
    return implode("", $string);
}

echo get_only_numbers("U$ 499,50"); // prints 49950

この関数は、文字列から数値のみを返すことになっています。この関数は適切にコーディングされていますか?

4

3 に答える 3

4

preg_replaceへの 1 回の呼び出しでも同様に実行できると思います。

preg_replace('/\D+/', '', 'U$ 499,50'); // returns "49950"
于 2012-05-09T20:35:36.757 に答える
3

配列の比較が不要になるように関数をさらに最適化するには、is_numericを参照してください。

于 2012-05-09T20:31:43.860 に答える
2

ちゃんと?それは想定どおりのことを行います...しかし、私は正規表現を好みます:

function get_only_numbers($string){
    return preg_replace("/[^0-9]/", "", $string);
}
于 2012-05-09T20:36:00.480 に答える