Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对字符串中的任何数字使用函数_Php_String_Number Formatting - Fatal编程技术网

Php 对字符串中的任何数字使用函数

Php 对字符串中的任何数字使用函数,php,string,number-formatting,Php,String,Number Formatting,我想把这个带到这根绳子上 **字符串**=55香蕉泥25测试转换为55香蕉泥25测试 现在我有了将任何数字转换为单词的功能,即replaceNumtoWord($number) 但是,我需要获取字符串,找到每个数字,然后对字符串中的每个数字使用函数,而不是从中提取数字 有什么想法或建议吗?您可以使用: 如果必须使用不支持匿名函数的旧PHP版本: function _num2word_cb($match) { return replaceNumToWord($match[0]);

我想把这个带到这根绳子上

**字符串**=55香蕉泥25测试
转换为
55香蕉泥25测试


现在我有了将任何数字转换为单词的功能,即
replaceNumtoWord($number)

但是,我需要获取字符串,找到每个数字,然后对字符串中的每个数字使用函数,而不是从中提取数字

有什么想法或建议吗?

您可以使用:

如果必须使用不支持匿名函数的旧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

您可以使用:

如果必须使用不支持匿名函数的旧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

可以使用

如果您的php版本<5.3,则需要定义传递给preg\u replace\u回调的函数。

您可以使用

preg_replace_callback ( mixed $pattern , callable $callback , mixed
 $subject [, int $limit = -1 [, int &$count ]] )
如果php版本<5.3,则需要定义传递给preg_replace_回调的函数

preg_replace_callback ( mixed $pattern , callable $callback , mixed
 $subject [, int $limit = -1 [, int &$count ]] )
该函数的行为与preg_replace()几乎相同,只是应该指定回调而不是替换参数


此函数的行为与preg_replace()几乎相同,只是不应指定替换参数,而应指定回调。

删除我的函数,对你的函数进行升级,因为它是较早的,我自己的解决方案没有添加任何新的内容。很抱歉,Gordon,我更改了函数名,并且从未从代码中更新过它,似乎没有错误,但我的replaceNumToWord函数有一个问题,因为它没有返回任何内容。感谢TheifMaster和Gordon删除我的,因为它是较早的,所以我的解决方案没有添加任何新内容。我的道歉Gordon,我更改了函数名,并且从未从您的代码中更新过它,似乎没有错误,但我的ReplaceNumToward函数有问题,因为它没有返回任何内容。谢谢他们的老板和戈登