如何将preg_replace
与捕获组一起使用?:
preg_replace('/testing\[([0-9]+)\]/', $this->storeNew[**THE NUMBER THAT WAS IN BETWEEN**], $this->code);
答案 0 :(得分:3)
您应该使用preg_replace_callback
和自定义函数来实现这一目标。
你可以这样做:
class A {
private $code = 'testing[82]';
public function match() {
return preg_replace_callback('/testing\[([0-9]+)\]/',function($matches) {
return $this->storeNew($matches[1]);
}, $this->code);
}
private function storeNew($number){
return ++$number;
}
}
$a = new A();
echo $a->match();
使用$ this会有点棘手,所以你可能需要类似的东西(@NiettheDarkAbsol代码下面):
$src = $this->storeNew;
preg_replace('/testing\[([0-9]+)\]/', function($n) use ($src) {
return isset($src[$n[1]]) ? $src[$n[1]] : $n[0];
// return unchanged if not found in array
},$this->code);
答案 1 :(得分:0)
我不确定您希望以哪种方式使用该号码。如果您只是需要数字本身而没有别的我不会使用RegEx,而是使用:
filter_var('testing[83]', FILTER_SANITIZE_NUMBER_INT);