我的代码是:
<?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中"修复",你认为这是合理的,我也让你在那里检查是否重复。