La via più facile
Crea una variabile separata per contenere la tua espressione regolare; in questo modo puoi semplicemente commentare l' preg_replace()
affermazione:
$re = '#<br\s*/?>(?:\s*<br\s*/?>)+#i';
// $string = preg_replace($re, '<br />', $string);
Risolto usando le classi di caratteri
Per correggere i commenti di riga, puoi interrompere ?>
inserendo >
una classe di caratteri in questo modo:
$string = preg_replace('#<br\s*/?[>](?:\s*<br\s*/?[>])+#i', '<br />', $string);
^ ^ ^ ^
Per correggere i commenti di blocco, puoi applicarlo a /
:
$string = preg_replace('#<br\s*[/]?>(?:\s*<br\s*[/]?>)+#i', '<br />', $string);
^ ^ ^ ^
Per correggere entrambi gli stili di commento, puoi mettere /
e >
nella loro classe di caratteri.
Risolto usando il /x
modificatore
Il x
modificatore - aka PCRE_EXTENDED
- ignora gli spazi e le nuove righe in un'espressione regolare (tranne quando si verificano all'interno di una classe di caratteri); questo rende possibile aggiungere spazi per separare i caratteri problematici. Per correggere entrambi gli stili di commento:
$string = preg_replace('#<br\s* /? >(?:\s*<br\s* /? >)+#ix', '<br />', $string);
^ ^ ^ ^