我有这个代码,我创建一个cast
来删除符号€
。
$t = "€2000";
$venc = (int)$t;
echo $venc; // actually echo is 0 and i want 2000 (remove symbol)
输出为0
而不是2000
,因此,代码无法正常工作。
(int)$t;
不回应2000的原因是什么?
感谢
答案 0 :(得分:8)
施法例程不会删除无效字符,但是从头开始并在达到第一个无效字符时停止然后将其转换为数字,在您的情况下,欧元符号无效并且它是第一个字符,因此结果数字为0。 / p>
检查http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion
您可以尝试(int)preg_replace('/\D/ui','',$t);
但是如果你正在处理货币,你不应该忘记它们不是整数而是浮动
(float)preg_replace('/[^0-9\.]/ui','',$t);
答案 1 :(得分:4)
这可以帮到你
$t = preg_replace('/[^0-9]/i', '','€2000');
$venc = (int)$t;
echo $venc;
答案 2 :(得分:0)
使用substr
echo substr($t,3); // returns "2000"
答案 3 :(得分:0)
$t = "€2000";
$venc = (int)substr($t,1);
echo $venc;