2014-06-24 51 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