is_numeric()为unicode字符串编号返回false

时间:2013-12-04 05:58:46

标签: php unicode xampp

我在ubuntu机器上安装了xampp。我发现is_numeric函数返回FALSE的unicode字符串数。例如۳۴۵۳ 3453返回FALSE,转换为int会将所有unicode数字字符串评估为0。我迁移到linux系列操作系统不到一周。在此之前它在我的Windows机器上工作正常,一切都很好。我的问题有什么解决方案?

1 个答案:

答案 0 :(得分:0)

首先按settype将Unicode编号۳۴۵۳设置为整数,然后使用is_numeric进行验证。

修改1

首先,您需要转换为正确的UTF-8,然后您可以验证为整数。

    if(!mb_check_encoding($content, 'UTF-8') 
        OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) { 

        $content = mb_convert_encoding($content, 'UTF-8'); 

        if (mb_check_encoding($content, 'UTF-8')) { 
            // log('Converted to UTF-8'); 
        } else { 
            // log('Could not converted to UTF-8'); 
        } 
    } 
    return $content; 
} 

取自here