【问题标题】:Accessing capture group in preg_replace_callback在 preg_replace_callback 中访问捕获组
【发布时间】:2014-02-17 04:54:00
【问题描述】:

我有一个字符串,我要替换其中的一部分。但是,我只想使用我匹配的模式的一部分。

例子:

$subject = "methodName(127)";

$callback = function($match)
{
    echo $match[0];
    // will echo 'methodName(127)'

    return;
}

preg_replace_callback('/[a-z]+\([0-9]+\)/', $callback, $subject, 1);

在本例中,我的回调方法将访问整个模式匹配。但是,我想只隔离括号之间的数字。捕获组在这里似乎很有用,但我不知道是否有办法在 $callback 中访问它,或者将其作为参数传递(例如 use ($arg))。

我明白我可以简单地在$callback 中使用括号之间的模式preg_match,但我想知道这是否可能与捕获组有关。

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:

    您可以使用捕获组来访问数字。这似乎做你想做的 -

    $subject = "methodName(127)";
    $callback = function($match)
    {
        var_dump($match);
        /*
            OUTPUT-
            array
              0 => string 'methodName(127)' (length=15)
              1 => string '127' (length=3)
        */
        echo $match[1];
        //OUTPUT - > 127
        return;
    };
    preg_replace_callback('/[a-zA-Z]+\(([0-9]+)\)/', $callback, $subject, 1);
    //                                 ^      ^ Capturing groups 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 2019-12-10
      • 2011-02-26
      • 2020-01-22
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多