0

我有一个像1.100.000这样的价格格式现在我想用逗号替换所有点,所以它应该看起来像这样 - 1,100,000。为此,我尝试了此代码-

<?php
$number=1.100.000;
$number=str_replace('.',',',$number);
?>

但它不起作用。任何人都可以帮忙。?

4

5 回答 5

8

缺少引号。试试这个 -

$number="1.100.000";
$number=str_replace('.',',',$number);
var_dump($number);

输出 -

string(9) "1,100,000"
于 2015-04-20T06:01:18.063 回答
3

为了让它更健壮一点,只有当它有 3 个以下数字时,你才能替换点,所以它不会替换美分。尝试:

$number = "1.100.000.00";
$number = preg_replace('/\.(\d{3})/', ',$1', $number);
var_dump($number);

输出 -

string(12) "1,100,000.00"
于 2015-04-20T06:08:18.120 回答
1

您可以使用正则表达式

preg_replace('/\./', ',', $number);

这将取代所有的“。” 带有“,”的点。

于 2015-04-20T06:02:55.623 回答
1

您的功能不起作用,因为

$number=1.100.000;  
var_dump($number);

解析错误:语法错误,意外的 '.000' (T_DNUMBER)

不是字符串,str_replace()仅适用于string

所以你必须这样做

$number="1.100.000";  (type = string)
于 2015-04-20T06:23:57.097 回答
0

最好的方法是number_format()函数。https://www.php.net/manual/en/function.number-format.php

遵循这个例子:

$number = 1234.56;

// english notation (default)
$english_format_number = number_format($number);
// 1,235

// French notation with thousands separator
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57
于 2021-10-07T12:10:04.007 回答