Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Strip字符串,转换为int_Php_String_Int - Fatal编程技术网

PHP Strip字符串,转换为int

PHP Strip字符串,转换为int,php,string,int,Php,String,Int,我有一个字符串$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 我在第二行回音时没有

我有一个字符串
$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英镑,如果价格更高,它将包括一个中断。即1400.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)";

再次感谢,Matt

您不能以当前的方式使用
substr
。这是因为您正试图删除
字符,这是一个双字节的unicode字符,但是
substr()
不是unicode安全的。您可以使用
$str=substr($string,2)
,或者更好地使用
str\u replace()
,如下所示:

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

原始答案

我会保留这个版本,因为它仍然可以提供一些见解。如果
不是2字节的unicode字符,答案就可以了。知道了这一点,您仍然可以使用它,但您需要在偏移量
2
而不是
1
处启动子字符串


您使用的
substr
是错误的。应该是:

$str = substr($special, 1);

检查第三个参数是否为子字符串的长度。您通过了
0
,因此得到了一个空字符串。如果省略第三个参数,它将返回从第一个参数中给定的索引开始到原始字符串结尾的子字符串。

您好,现在将第一个值回显为130.000,但第二个加法不会显示任何内容?我会继续努力。谢谢你的帮助