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>~";

これでうまくいくはずです。

2番目のグループも空の文字列と一致できる必要がある場合は、+を別のに置き換え*ます。\w文字、数字、アンダースコアに一致することに注意してください。それが多すぎるか不十分な場合は、適切な文字クラスに置き換えてください。

preg_replace_callbackもう1つ、の構文では、関数名を文字列として渡す必要があると思います。

于 2012-09-26T22:05:01.740 に答える