RegExトリックブックに追加する価値のある他のいくつかの方法:
/(<br\s*/?>)+/i
まず、RegExを次のように圧縮して次のように置き換えることができます<br />
(RegExPに先読みを付ける必要はありません)。そうすると、選択したXHMTL改行が常に発生します。
*/
終了コメントまたは?>
終了スクリプトをトリップしないように正規表現を変更する他の方法:
- 所有格の数量詞を使用します:
#(<br\s*+/?+>)+#i
-これは基本的に、\s*+
空白ができるだけ多く一致していることを見つけてそれを保持し/?+
、スラッシュを見つけた場合はそれを保持することを意味します!
- 囲み
\s*
、/*
キャプチャグループに=>#(<br(\s*)(/?)>)+#i
ライブデモ:http ://codepad.viper-7.com/YjqUbi
そして、所有格の振る舞いを学習したので、コメントの問題もバイパスする最速の正規表現は次のとおりです。#(<br\s*+/?+>)++#i
トリッキーな状況でのコメントについて
コードを変更できない場合、またはすでに複数行のコメントを使用している場合:
$string='Hello<br>World<br><br />World<br><br><br>Word!';
<<<'comment'
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
comment;
ライブコード:http ://codepad.viper-7.com/22uOtV
注:nowdocはヒアドキュメントに似ていますが、コンテンツを解析せず、開始区切り文字を'
一重引用符で囲む必要があり'
ます(終了区切り文字は識別できないため、後に改行を追加する必要があります!);
$string='Hello<br>World<br><br />World<br><br><br>Word!';
goto landing;
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
landing:
実例:http ://codepad.viper-7.com/UfqrIQ
3.if(false)
またはif(0)
:を使用してコードをジャンプします。
$string='Hello<br>World<br><br />World<br><br><br>Word!';
if(0){
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
}
テスト:http ://codepad.viper-7.com/wDg5H5