php 使用preg_replace_callback()在字符串中的每个字母序列后添加变量的值

np8igboo  于 2023-03-28  发布在  PHP
关注(0)|答案(2)|浏览(123)

如何将变量传递到preg_replace_callback()调用的自定义回调函数中?
例如,我想在回调函数中使用变量$add

private function addToWord($add) {
    return preg_replace_callback(
        '/([a-z])+/i',
        function($word, $add) {
            return $word.$add;
        },
        $this->text
    );
}
vs3odd8k

vs3odd8k1#

你可以在这里使用use keyword

private function addToWord($add) {
    return preg_replace_callback(
        '/([a-z])+/i',
        function($word) use ($add) {
            return $word[1] . $add;
        },
        $this->text);
}
vwhgwdsa

vwhgwdsa2#

您的任务不需要使用use;preg_replace_callback()和捕获组都不在您的模式中。
匹配您的字母序列,然后用\K忽略它们,然后将$add值注入字符串中字母序列后面的位置。

private function addToWord($add)
{
    return preg_replace('/[a-z]+\K/i', $add, $this->text); 
}

否则,此问题是Callback function using variables calculated outside of it的重复问题。

相关问题