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*/?>)+/iund 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