RegExトリックブックに追加する他のいくつかの方法:
まず、RegExを次のように圧縮して/(<br\s*/?>)+/i
、<br />
(RegExPに先読みを付ける必要はありません)、常に選択したXHMTL改行になります。
RegExを変更して、*/
終了コメントや?>
終了スクリプトをトリップしないようにする他の方法:
- 所有的な量指定子を使用する:
#(<br\s*+/?+>)+#i
-基本的に\s*+
、空白と一致/?+
するものが見つかった場合はそれを維持し、スラッシュを発見した場合は維持します。
- 囲み
\s*
および/*
キャプチャグループで=>#(<br(\s*)(/?)>)+#i
ライブデモ:http : //codepad.viper-7.com/YjqUbi
そして、私たちは所有的行動を傾けたので、コメントの問題も回避する最速のRegExは次のとおりです。デモの説明#(<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はに似ているヒアドキュメントが、それは、コンテンツを解析し、それがだ持っている必要がありません開始に囲まれた区切り文字'
の単一引用符'
(ことに注意してください終了区切り文字はidentedすることができない、続かなければなりません;
し、新しい行を!)
$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