Я считаю себя еще новичком в регулярном выражении и имею следующую задачу:
Мои пользователи публикуют контент, содержащий один или несколько «разрывов строк» в конце. Эти «разрывы строк» - это <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
—