2014-06-24 94 views
0

我有一個STRING $special,它的格式與£130.00一樣,也是一個前稅(VAT)價格。PHP Strip字符串,轉換爲int

我需要去掉第一個字符,所以我可以運行一些簡單的加法。

$str= substr($special, 1, 0); // Strip first char '£' 
echo $str ;     // Echo Value to check its worked 
$endPrice = (0.20*$str)+$str ; // Work out VAT 

我在第二行回顯時沒有收到任何值?我也需要將字符串轉換爲整數才能運行添加?

感謝

馬特

+++ UPDATE

感謝本您的幫助,我把你的代碼,並加入了一些我自己的,還有比可能更好的方法來做到這一點更但它的工作:)我發現,如果價格低於1000將看起來像£130.00,如果價格是一個較大的價值,它將包括休息。即£1,400.22。再次

$str = str_replace('£', '', $price); 
$str2 = str_replace(',', '', $str); 
$vatprice = (0.2 * $str2) + $str2; 
$display_vat_price = sprintf('%0.2f', $vatprice); 
echo "£"; 
echo $display_vat_price ; 
echo " (Inc VAT)"; 

謝謝,馬特

回答

2

不能使用substr您目前正在使用它的方式。這是因爲您試圖刪除£字符,這是一個雙字節的Unicode字符,但substr()不是Unicode安全的。您可以使用$str = substr($string, 2),或者更好的,str_replace()這樣的:

$string = '£130.00'; 
$str = str_replace('£', '', $string); 
echo (0.2 * $str) + $str; // 156 

原來的答覆

我會繼續這個版本,因爲它仍然可以提供一些見解。如果£不是2字節的unicode字符,則答案可以。知道這一點,你仍然可以使用它,但你需要開始在偏移量2而不是1的子字符串。


您對substr的使用是錯誤的。它應該是:

檢查documentation第三PARAM將是子字符串的長度。您通過0,因此您得到一個空字符串。如果省略第三個參數,它將返回從第一個參數中給出的索引開始的子字符串,直到原始字符串的結尾。

+0

你好這現在回聲的第一個值爲130.000,但第二個加法不顯示任何東西?我會繼續嘗試。感謝您的幫助 –

+0

檢查我的更新。我監督了一些事情。 – hek2mgl