preg_replace
を実行するエレガントな方法があるかと疑問に思っていましたが、まだ置き換えられているものはpreg_replace
です。preg_replace - 置き換えられたものを変数に置き換えた
例として、ランダムなサイトのHTMLを含む文字列を想像してください。私はさらなる処理のためにその文字列から<head>
を削除し、さらに<head>
要素の内容を余分な変数(たとえばメタフラグの解析用)に保持したいと思います。
私は(グローバル変数を使用せずに)それを行うには二つの可能性を考えることができます。
if (preg_match('%<head>(.*?)</head>%ism', $html, $matches)) {
$html = preg_replace('%<head>(.*?)</head>%ism', '', $html);
$head = $matches[1];
}
この1つは理想的ではありません二回正規表現を実行しなければなりません。
$head = '';
$html = preg_replace_callback(
"%<head>(.*?)</head>%ism",
function ($match) use (&$head) {
$head .= $match[1];
return '';
},
$html
);
もっとエレガントで効率的な方法があるのだろうかと思っていました。
@WiktorStribiżew彼はそのシナリオでどのように試合をキャプチャしますか? – Steve
私は最初のものに行くだろう。私はもっと良い方法はないと思っていますが、あなたは 'str_replace'を使って2回目の正規表現を自分自身で保存することができます – apokryfos
私はあなたがマッチを保存していることに注意しませんでした。 2番目の方法が最も効率的です。 –