有将英语标准词汇转换为波斯语(波斯语)或阿拉伯语词汇的功能:
function farsinum($str){
if (strlen($str) == 1){
$str = "0".$str;
$out = "";
for ($i = 0; $i < strlen($str); ++$i) {
$c = substr($str, $i, 1);
$out .= pack("C*", 0xDB, 0xB0 + $c);
}
}
return $out;
}
但是这个功能会产生 01 02 03 ...而不是 1 2 3 ...... 我认为必须改变一些事情:
$out .= pack("C*", 0xDB, 0xB0 + $c);
任何帮助表示感谢。
答案 0 :(得分:1)
此功能将转换单个数字:
function farsinum ($digit) {
return pack("C*", 0xDB, 0xB0 + substr($digit, 0, 1));
}
如果你想转换一个大于9的数字,一个简单的循环将解决这个问题:
function farsinum ($number) {
// Work with a string so we can use index access
$number = (string) $number;
// We'd better add some error checking, to make sure we only accept digits
if (!ctype_digit($number)) return FALSE;
// Loop characters and convert them
for ($i = 0, $out = '', $length = strlen($number); $i < $length; $i++) {
$out .= pack("C*", 0xDB, 0xB0 + $number[$i]);
}
// Return the result
return $out;
}
我找不到资源来解释波斯语文本中负数和浮点数是如何表达的,如果你需要这样做,那么让我知道你希望输出看起来如何,我将会去。