Php 如何在嵌套preg_匹配的上下文中使用preg_replace?

Php 如何在嵌套preg_匹配的上下文中使用preg_replace?,php,regex,Php,Regex,PHP中获取匹配项(数字)并将其替换为字符串(在独立上下文中)的最有效方法是什么?在这些数字组中,独立上下文可能会影响彼此的替换值。这看起来非常复杂,但是。。。请尝试以下方法: $result = preg_replace_callback("/\d+/",function($m) { $ret = ""; // if the number starts with zeroes, handle them if( preg_match("/^0+/",$m[0],$zero

PHP中获取匹配项(数字)并将其替换为字符串(在独立上下文中)的最有效方法是什么?在这些数字组中,独立上下文可能会影响彼此的替换值。

这看起来非常复杂,但是。。。请尝试以下方法:

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

你要找的是一个数字到单词的转换器。我建议您使用现有的解决方案之一,而不是自己编写代码。下面是一个使用
convert_number_to_words
功能从:

输出:

startz[;thirty-onemendstartz[thirty-fivemend

输出与您的问题不完全相同,但您可以根据自己的要求修改函数来轻松实现这一点。

如果有人无法理解您的意思,您能举个例子吗?
startz[;thirty-onemendstartz[thirty-fivemend