使用PHP包显示1代替01为波斯数字

时间:2012-05-23 11:27:24

标签: php function numbers persian

有将英语标准词汇转换为波斯语(波斯语)或阿拉伯语词汇的功能:

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);

任何帮助表示感谢。

1 个答案:

答案 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;

}

我找不到资源来解释波斯语文本中负数和浮点数是如何表达的,如果你需要这样做,那么让我知道你希望输出看起来如何,我将会去。