如何将unicode字符串强制转换为int


How can I cast unicode string to int?

我的代码是:

<?php
   echo((int)("١٩")); //Number is 19
?>

但是,输出是0而不是19。

使两个数组的两种类型编号,使用str_replace函数。我在这个例子中使用了孟加拉语字符,你必须把它改成你的语言。

function convert_number($your_num){
    $find = array("০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯");
    $replace = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    return str_replace($find, $replace, $your_num);
}

只需调用需要转换号码的函数即可。

echo convert_number("১৯");

作品:19

PHP强制转换依赖于strtod,并且只管理ascii而不管理ARABIC-INIC UTF-8字符,尽管它们是指数字;因为这些字符没有转换,所以铸造它们将返回零。

您应该针对类似'x{0660}-'x{0669}(数字代码)的东西进行测试,将它们转换为ascii等价物,然后转换为正确的类型。

@javadaskari,目前将其修复为@Frayne-Konok的函数convert_number,即使输入数字是ascii,也可以应用它(它将保持有效)。

然后我觉得你打开一个bug是合理的https://bugs.php.net表示既然(int)"string"开始接受utf-8字符串,它就应该接受那些表示数字的字符。Php可能会处理一般的用户输入,您识别的情况可能会遇到该函数的其他使用,其行为方式出乎用户的意料。

但我不同意你似乎发现的错误会像我一样在php中"修复",你认为这是合理的,我也让你在那里检查是否重复。