PHP Strip String,转换为int

时间:2014-06-24 12:57:23

标签: php string int

我有一个STRING $special,格式为£130.00,也是前税(VAT)价格。

我需要剥离第一个字符,这样我就可以运行一些简单的添加。

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

当我在第二行回音时,我没有收到任何值?那么我还需要将字符串转换为整数才能运行添加吗?

由于

马特

+++更新

感谢您对此的帮助,我接受了您的代码并添加了一些我自己的代码,有很多更好的方法可以做到这一点但它有效:)我发现如果价格低于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)";

再次感谢,马特

1 个答案:

答案 0 :(得分: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的使用是错误的。它应该是:

$str = substr($special, 1);

检查documentation第三个参数将是子字符串的长度。你通过0,因此你得到一个空字符串。如果省略第三个参数,它将从第一个参数中给出的索引开始返回子字符串,直到原始字符串结束。