3
 function intfix($value) {
        $value = trim($value);
        $value = preg_replace("/[^0-9](.*)$/", '', $value);
        return $value+0;
    }

この関数は、非常に大きな数値を処理し、数値でないものを取り除くか、0 を返すことになっています。

echo intfix(123123123123123); // 1

クレイジーなことは、ライブサーバーでは 1 しか返されませんが、ローカルサーバーでは正しい量が返されることです。何が起きてる?

4

3 に答える 3

3

正規表現の最初の数字のみを選択しています。

それを変更: preg_replace("/[^0-9]+/", '', $value);

于 2013-07-09T15:17:31.680 に答える
3

変化する:

$value = preg_replace("/[^0-9](.*)/", '', $value);

に:

$value = preg_replace("/[^0-9]+/", '', $value);

何が悪かったのか?あなたは 1 つの番号を選択し、何よりもパス上にあるものを選択しました。何もないので、数字以外には一致しないため、1 の数字を保持し、すべてを何も置き換えません。

于 2013-07-09T15:17:34.980 に答える
1
$value = preg_replace("/^[^0-9]+$/", '', $value);
于 2013-07-09T15:17:42.537 に答える