Я считаю себя еще новичком в регулярном выражении и имею следующую задачу:
 Мои пользователи публикуют контент, содержащий один или несколько «разрывов строк» в конце.  Эти «разрывы строк» - это <p><br></p> с переменным количеством пробелов между тегами.  Иногда в каждом абзаце содержится больше одного.  Некоторые примеры: 
 <p> <br> </p> 
 <p> <br> </p> 
 <p><br> <br> </p> 
 <p> <br> </p> 
Как я могу удалить эти абзацы с конца каждого фрагмента контента, а также удалить скрытые пробелы, пробелы, разрывы строк и вкладки?
 <?php $strings[] = 'foo<p> <br> </p>'; $strings[] = 'foo<p> <br> </p>'; $strings[] = 'foo<p><br><br> </p>'; $strings[] = 'foo<p> <br> </p>'; foreach($strings as $string){ // \s* matches any number of whitespace characters (" ", \t, \n, etc) // (?:...)+ matches one or more (without capturing the group) // $ forces match to only be made at the end of the string $string = preg_replace("/(?:<p>\s*(?:<br>\s*)+<\/p>\s*)+$/", "", $string); echo $string."\n---\n"; } 
Выход:
Foo
—
Foo
—
Foo
—
Foo
—