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