我想将数字转换为单词格式。
例如:
$count = 5;
echo "Hello Mr user this is your ".$count." review."
我需要这样的输出...
"您好,用户先生,这是您的第五次评论。"
在另一个 StackOverflow 线程中检查这一点:
将数字转换为其字符串表示形式
php 中没有内置函数来做到这一点。但是尝试外部库,例如:http://pear.php.net/package/Numbers_Words
如果你指的是内置函数,不,PHP 没有。但是您可以创建自己的。
如果您只查看英文数字,这不是什么大问题。但是,如果您需要处理外语(如阿拉伯语),则必须做一些额外的工作,因为数字和对象具有性别。所以算法变得更加复杂。
为了记录,我正在努力为阿拉伯语制作一个开源转换工具。
我知道
这不是你想要的,但我从某处 php.net 的评论中捡到了这个(找不到来源),它适用于1st
、243rd
和85th
等输出。
function ordinalize($num)
{
if ( ! is_numeric($num)) return $num;
if ($num % 100 >= 11 and $num % 100 <= 13)
{
return $num."th";
}
elseif ( $num % 10 == 1 )
{
return $num."st";
}
elseif ( $num % 10 == 2 )
{
return $num."nd";
}
elseif ( $num % 10 == 3 )
{
return $num."rd";
}
else
{
return $num."th";
}
}
为了可读性和简单性,您甚至可能要考虑这种格式,具体取决于您期望的数字有多高。如果它们小于 100,您应该能够轻松编写自己的函数。但是,如果它们可以变得非常高:
"用户先生您好,这是您的三千四百二十五条评论。"
听起来有点尴尬:)
希望这对一些有所帮助。