【问题标题】:cast integer php - remove symbol from string强制转换整数 php - 从字符串中删除符号
【发布时间】:2011-09-14 19:57:42
【问题描述】:

我有这个代码,我创建了一个cast 来删除符号

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

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

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

谢谢

【问题讨论】:

    标签: php casting


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这可以帮助你

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

      【讨论】:

      • 比我的 if/else/index_of/is_numeric 方法更优雅,哈哈
      【解决方案3】:
      $t = "€2000";
      $venc = (int)substr($t,1);
      echo $venc;
      

      【讨论】:

        【解决方案4】:

        使用substr

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

        【讨论】:

        • 欧元符号的 strlen 是 3 ;-)
        猜你喜欢
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        相关资源
        最近更新 更多