PHP中最有效的方法是采用匹配(数字)并用字符串替换它们(在隔离的上下文中)这些数字组中的孤立上下文可能会影响彼此的替换值。
答案 0 :(得分:1)
您正在寻找的是Number to Words转换器。我建议您使用现有解决方案之一,而不是尝试自己编写代码。这是一个使用this blog中的convert_number_to_words
函数:
$output = preg_replace_callback('~(\d+)~', function ($matches) {
return convert_number_to_words($matches[1]);
}, $testString);
输出:
startz[;thirty-onemendstartz[thirty-fivemend
输出与您的问题中的输出不完全相同,但您可以通过根据您的要求修改功能轻松实现此目的。
答案 1 :(得分:0)
看起来非常复杂,但是......尝试这样的事情:
$result = preg_replace_callback("/\d+/",function($m) {
$ret = "";
// if the number starts with zeroes, handle them
if( preg_match("/^0+/",$m[0],$zeroes)) $ret .= str_repeat("zero",strlen($zeroes[0]));
// trim leading zeroes
$number = ltrim($m[0],"0");
// IMPLEMENT NUMBER-TO-NAME CONVERSION HERE
// Append result to $ret
return $ret;
},$teststring);