Einige andere Möglichkeiten, die es wert sind, in das RegEx-Trickbuch aufgenommen zu werden :
Zuerst können Sie Ihren RegEx komprimieren, um: /(<br\s*/?>)+/i
und durch zu ersetzen <br />
(Sie müssen den RegExP nicht mit Lookaheads belasten), und Sie erhalten immer den von Ihnen gewählten XHMTL-Zeilenumbruch.
Andere Möglichkeiten, Ihr RegEx so zu ändern, dass es keinen */
Endkommentar oder Endskript auslöst ?>
:
- Verwenden Sie besitzergreifende Quantifizierer :
#(<br\s*+/?+>)+#i
- was im Grunde bedeutet, \s*+
wenn Sie festgestellt haben, dass Leerzeichen mit so vielen übereinstimmen, wie es gibt, und behalten Sie es, und /?+
wenn Sie einen Schrägstrich gefunden haben, behalten Sie es!
- Einschließen
\s*
und /*
in Erfassungsgruppen =>#(<br(\s*)(/?)>)+#i
Live-Demos: http://codepad.viper-7.com/YjqUbi
Und da wir uns auf das besitzergreifende Verhalten gestützt haben, ist das schnellste RegEx, das auch das Kommentarproblem umgeht, die erklärte Demo#(<br\s*+/?+>)++#i
Wie zum Kommentieren in schwierigen Situationen
Wenn Sie den Code nicht ändern können oder bereits einen mehrzeiligen Kommentar verwendet haben und:
1. Verwenden Sie einen Nowdoc :
$string='Hello<br>World<br><br />World<br><br><br>Word!';
<<<'comment'
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
comment;
Live-Code: http://codepad.viper-7.com/22uOtV
Hinweis: a Nowdoc ähnelt einem heredoc aber nicht den Inhalt analysieren und hat es zu haben ist Anlaßtrennzeichen in geschlossenen '
Apostrophe '
( beachten Sie, dass die Endbegrenzer kann nicht eingerückt werden , müssen befolgt werden ;
und eine neue Linie ! )
2. Springe mit einem goto über den Code :
$string='Hello<br>World<br><br />World<br><br><br>Word!';
goto landing;
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
landing:
Live-Beispiel: http://codepad.viper-7.com/UfqrIQ
3. Überspringen Sie den Code mit if(false)
oder if(0)
:
$string='Hello<br>World<br><br />World<br><br><br>Word!';
if(0){
$string = preg_replace('#(<br\s*/?>)+#i', '<br />', $string);
}
Test: http://codepad.viper-7.com/wDg5H5