2012-07-05 48 views
0

將尾隨零添加到php字符串有一個文本框可以獲取價格數據。 如果有人輸入類似「3.」我想將它轉換爲「3.0」 我不能簡單地在最後附加「0」,因爲如果它是「100」被轉換爲「1000」如果格式不是

此外is_numeric(「3。」)返回1。

什麼是可能的方法?

+0

搜索小數點是一個字符串的最後一個字符,如果是,後加一個零? – Jamie 2012-07-05 10:27:20

+0

是否做到了這一點,搜索是否有一個功能可以做到這一點 – amitchhajer 2012-07-05 10:51:29

回答

2

您需要number_format()

number_format('3', 1, '.', ''); // = 3.0 
number_format('3.', 1, '.', ''); // = 3.0 
number_format('3.22', 1, '.', ''); // = 3.2 
number_format('3.22abc', 1, '.', ''); // = 3.2 and a "PHP Notice: A non well formed numeric value encountered" 
number_format('abc3.22', 1, '.', ''); // = "PHP Warning: number_format() expects parameter 1 to be double, string given" 
+0

謝謝你:) – amitchhajer 2012-07-05 10:38:00

+0

如果我的電話號碼是字符串格式,該怎麼辦? floatval不會轉換它。任何想法? – amitchhajer 2012-07-05 10:46:09

+0

我回應了結果,它是3.0 ... floatval將停止轉換第一個非數字符號,所以「3」,「3.」,「3.1234567」將工作。 「3.123456abc」會給你一個通知。 「abc123」會給你一個警告。 – 2012-07-05 10:51:24

0

爲此,您將需要使用number_format()

number_format($number, 1, ".", "");會做的伎倆爲您提供:

  • 3成爲3.0
  • 2500成爲2500.0
+0

是的,它看起來OP是想要有效的數字,所以將第四個參數從'「」改爲''''。 – 2012-07-05 10:35:16

+0

@RogueCoder呃......這是一個疏忽。感謝通知,我編輯了答案。 – Whisperity 2012-07-05 10:38:45

+0

您實際上需要添加''作爲第四個參數,因爲它默認爲','。 – 2012-07-05 10:49:42

0

嘗試將它作爲浮動首先投射,然後使用number_format對其進行格式化。

$number = (float) $_POST['text_box']; 
number_format($number, 1, '.', ''); 

希望這有助於