代码之家  ›  专栏  ›  技术社区  ›  jayarjo

我能从preg\u replace\u回调中知道哪个替换正在进行吗?

  •  1
  • jayarjo  · 技术社区  · 16 年前

    我在用 替换字符串中的特定标记。但除了实际的标记外,我还需要知道该标记是主题字符串中的第一个、第二个还是第三个。有没有办法获取这些信息?

    $计数 在preg\u中替换\u回调定义( http://php.net/manual/en/function.preg-replace-callback.php ),它统计替换,但我不确定是否可以从回调中访问它。在所描述的上下文中有任何用法的例子吗?

    3 回复  |  直到 16 年前
        1
  •  2
  •   outis    16 年前

    这个 $count

    function repl($matches) {
        static $count = 0;
        ++$count;
        ...
    }
    preg_replace_callback('/.../', 'repl', $haystack);
    
        2
  •  1
  •   kennytm    16 年前

    您可以创建一个非局部变量来保持计数。

        3
  •  1
  •   VolkerK    16 年前

    使用PHP5.3+还可以使用 closure (而不是全局或静态变量)

    $counter = 0
    preg_replace_callback('/.../', function($matches) use(&$counter) {
      ++$counter;
      ...
      },  $haystack
    );
    
    推荐文章