0

我需要捕获 2 个组:1-expr(可以为空);2-ESSI

见下面的代码

$s = 'regular expr<span>essi</span>on contains';
function my_func($matches){

    //I need 2 groups captured
    //$matches[1] - "expr" (see $s before span) - can be empty, but I still need to capture it
    //$matches[2] - "essi" (between spans)
}
$pattern = "???";
echo preg_replace_callback($pattern, my_func, $s);
4

1 回答 1

2
$pattern = "~(\w*)<span>(\w+)</span>~";

这应该可以解决问题。

如果第二组也应该能够匹配空字符串,请将 替换为+另一个*。请注意,\w它将匹配字母、数字和下划线。如果太多或不足,请用适当的字符类替换它。

还有一件事:我认为 for 的语法preg_replace_callback要求您将函数名作为字符串提交。

于 2012-09-26T22:05:01.740 回答