0

たとえばpreg_match_all()ですべての一致を取得し、結果を空の文字列に置き換えるにはどうすればよいですか?

私はこのようなものを試しました:

<?php
$comments   = array();              

$selectors  = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~',
function ($match) {
    $comments[] = $match[0];
    return '';
}, $input);
?>

しかし、$ comment変数は無名関数からアクセスできないように見えるため、これはあまりうまく機能しません。私はグローバル変数を作ることができると思いますが、私は本当にそのような名前空間を台無しにしたくありません

4

1 に答える 1

0

これは機能するはずです:

<?php
$comments   = array();              

$selectors  = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~',
function ($match) use (&$comments) {  //add the variable $comments to the function scope
    $comments[] = $match[0];
    return '';
}, $input);
?>
于 2013-03-14T11:01:09.927 に答える