PHPには、すべての文字列である変数の配列があります。格納される値の一部は、コンマ付きの数値文字列です。
必要なもの:
文字列からコンマをトリムする方法。数値文字列に対してのみこれを行います。これは見た目ほど簡単ではありません。主な理由は、以下が失敗することです。
$a = "1,435";
if(is_numeric($a))
$a = str_replace(',', '', $a);
$a = "1435"
は数値です。しかし、$a = "1,435"
は数値ではありません。取得する文字列の一部はコンマを含む通常の文になるため、すべての文字列で文字列置換を実行することはできません。
テストされていませんが、おそらくif(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)
のようなものです
他の方法でそれを行う:
$a = "1,435";
$b = str_replace( ',', '', $a );
if( is_numeric( $b ) ) {
$a = $b;
}
最も簡単な方法は次のとおりです。
$var = intval(preg_replace('/[^\d.]/', '', $var));
またはフロートが必要な場合:
$var = floatval(preg_replace('/[^\d.]/', '', $var));
これを試してください。これは私のために働いた
number_format(1235.369,2,'.','')
このようなnumber_formatを使用すると、number_format(1235.369,2)
の答えは1,235.37になります
しかし、以下のように使用する場合
number_format(1235.369,2,'.','')
答えは1235.37
「1,235.37」の「、」を削除しています
function cleanData($a) {
if(is_numeric($a)) {
$a = preg_replace('/[^0-9,]/s', '', $a);
}
return $a;
}
alsoに単語が含まれる文字列内の数値からコンマを削除する場合、preg_replace_callbackを使用するのが最も簡単だと思います。
例:
$str = "Hey hello, I've got 12,500 kudos for you, spend it well"
function cleannr($matches)
{
return str_replace("," , "" , $matches["nrs"]);
}
$str = preg_replace_callback ("/(?P<nrs>[0-9]+,[0-9]+)/" , "cleannr" , $str);
出力:
「こんにちは、私はあなたのために12500の名誉を持っています、それをうまく使います」
この場合、他のコンマ(句読点)を削除したくないため、パターン(正規表現)は受け入れられた回答で指定されたものとは異なります。
ここで/[0-9,]+/
の代わりに/[0-9]+,[0-9]+/
を使用すると、出力は次のようになります。
「こんにちは、私はあなたがそれを上手に使うために12500の名誉を持っています」
あなたが探しているものの理想的な解決策はfilter_var()
であるように聞こえます:
$a = filter_var($a, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
(現在はFILTER_FLAG_ALLOW_THOUSANDオプションがないため、FILTER_VALIDATE_INTではなくFILTER_VALIDATE_FLOATを使用していることに注意してください)。