我正试图把它带到这个字符串
**string** = 55 Banana Slush 25 Test
加入Fifty five Banana Slush twenty five test
现在我有将任何数字转换为replaceNumtoWord($number)
但是我需要使用字符串,找到每个数字,然后在字符串中的每个数字上使用该函数,而不是从中提取数字。
有任何想法或建议吗?
答案 0 :(得分:4)
您可以使用preg_replace_callback()
:
$str = preg_replace_callback('/\d+/', function($match) {
return replaceNumToWord($match[0]);
}, $str);
如果必须使用不支持匿名函数的旧PHP版本:
function _num2word_cb($match) {
return replaceNumToWord($match[0]);
}
$str = preg_replace_callback('/\d+/', '_num2word_cb', $str);
旁注:模式\d+
将匹配任何数字序列,无论它们出现在何处,例如它将匹配“my10,20,30foo”中的10,20和30。如果您只想匹配20,则可以将模式更改为\b\d+\b
。
答案 1 :(得分:1)
您可以使用preg_replace_callback。
function transNumber($str) {
return preg_replace_callback('/\d+/', function($matches){
return replaceNumtoWord($matches[0]);
}, $str);
}
如果你的php版本< 5.3,然后你需要定义传递给preg_replace_callback的函数。
答案 2 :(得分:1)
preg_replace_callback ( mixed $pattern , callable $callback , mixed
$subject [, int $limit = -1 [, int &$count ]] )
此函数的行为几乎与preg_replace()的行为相同,除了不是替换参数的事实,应该指定回调。