强制转换整数从字符串中移除符号


cast integer remove symbol from string

我有这个代码,我制作了一个cast来删除符号

    $t = "€2000";
    $venc = (int)$t;
    echo $venc; // actually echo is 0 and i want 2000 (remove symbol)

输出是0而不是2000,因此,代码并没有像我预期的那样工作。

(int)$t;没有echo 2000的原因是什么?

感谢

强制转换例程不会删除无效字符,而是从头开始,当到达第一个无效字符时停止,然后将其转换为数字,在您的情况下,Euro符号无效,它是第一个字符,因此得到的数字为0。

检查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);

这可以帮助您

$t = preg_replace('/[^0-9]/i', '','€2000');
$venc = (int)$t;
echo $venc;
$t = "€2000";
$venc = (int)substr($t,1);
echo $venc;

使用substr

   echo substr($t,3);  // returns "2000"