preg_replace在变量中返回

时间:2013-01-15 20:07:30

标签: php regex

这里我有我的正则表达式,它创建了4chan样式引用的所有实例(例如> 10,> 59,> 654564),并将其作为模式输出返回。我的问题是,是否可以插入我的模式输出 ...

\ 1

...进入PHP函数。

虽然这很好用:

$a = preg_replace('`(>\d+)`i', '\1', $b);

我正在寻找的东西不是:

$a = preg_replace('`(>\d+)`i', '".getpost('\1')."', $b);

1 个答案:

答案 0 :(得分:2)

查看preg_replace_callback()功能。


示例[php> = 5.3.0] 使用Closure ):

$callback = function($match) {
    return "{" . $match[1] . "}"; # do smth with match
};
$string = 'test1 >1 test2 >12 test3 >123 test4';
echo preg_replace_callback('~(>\d+)~i', $callback, $string);

将输出:

test1 {>1} test2 {>12} test3 {>123} test4

示例[php< 5.3.0]

function replaceCallback($match) {
    return "{" . $match[1] . "}"; # do smth with match
};
$string = 'test1 >1 test2 >12 test3 >123 test4';
echo preg_replace_callback('~(>\d+)~i', 'replaceCallback', $string);