preg_replace_callback
正規表現検索を行い、コールバック関数を使用して置換を行う
&reftitle.description;
stringarraynullpreg_replace_callback
stringarraypattern
callablecallback
stringarraysubject
intlimit-1
intcount&null;
intflags0
この関数の動作は、ほぼ preg_replace と同じですが、
replacement の代わりに
callback を指定するところが異なります。
&reftitle.parameters;
pattern
検索するパターン。
文字列あるいは文字列の配列のいずれかとなります。
callback
このコールバック関数は、検索対象文字列でマッチした要素の配列が指定されて
コールされます。このコールバック関数は、置換後の文字列を返す必要があります。
コールバックのシグネチャは、次のとおりです。
stringhandler
arraymatches
preg_replace_callback 用の
callback 関数が、
ひとつの場所だけで必要となることがあります。
そんな場合は、
無名関数
を使って宣言した無名関数を
preg_replace_callback のコール時に使用します。
このようにすることにより、コールに関するすべての情報を 1 ヶ所に集め、
他の場所で使用されないコールバック関数名で関数の名前空間を
汚染しないようにすることができます。
preg_replace_callback と無名関数
\s*\w|',
function ($matches) {
return strtolower($matches[0]);
},
$line
);
echo $line;
}
fclose($fp);
?>
]]>
subject
文字列あるいは文字列の配列で、
検索および置換の対象となる文字列を指定します。
limit
subject 文字列における
各パターンの最大置換回数。デフォルトは
-1 (無制限) です。
count
指定した場合は、置換を行った回数がここに格納されます。
flags
flags には、
PREG_OFFSET_CAPTURE と
PREG_UNMATCHED_AS_NULL の組み合わせが指定できます。
これは matches 配列のフォーマットに影響します。
詳細は preg_match 関数の説明を参照ください。
&reftitle.returnvalues;
preg_replace_callback は、
subject が配列の場合には配列を、
それ以外の場合は文字列を返します。
エラー時の戻り値は &null; となります。
マッチするものが見つかった場合は新しい subject
を返し、それ以外の場合はもとの subject
をそのまま返します。
&reftitle.errors;
&pcre.pattern.warning;
&reftitle.changelog;
&Version;
&Description;
7.4.0
パラメータ flags が追加されました。
&reftitle.examples;
preg_replace_callback の例
]]>
&example.outputs;
カプセル化された BB code を処理するための、
preg_replace_callback での再帰構造の使用
'.$input[1].'';
}
return preg_replace_callback($regex, 'parseTagsRecursive', $input);
}
$output = parseTagsRecursive($input);
echo $output;
?>
]]>
&reftitle.seealso;
PCRE のパターン
preg_replace_callback_array
preg_quote
preg_replace
preg_last_error
無名関数