cast integer php - 从字符串中删除符号

use*_*961 3 php casting

我有这个代码,我做一个cast删除符号.

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

输出是0与不是2000,那么,代码不工作,我期望的那样.

(int)$t;不回声2000 的原因是什么?

谢谢

ven*_*mus 8

cast例程不会删除无效字符,但是从头开始并在到达第一个无效字符时停止然后将其转换为数字,在您的情况下,欧元符号无效并且它是第一个字符,因此结果数字为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);