Как регулярное выражение - заменить несколько тегов одним тегом?


Я хочу, чтобы <br /><br /> превратился в <br />

Каков шаблон для этого с регулярным выражением?

Примечание: Теги <br /> могут встречаться более 2 раз подряд.

 13
Author: Weblurk, 2011-10-12

3 answers

Вы могли бы использовать s/(<br \/>)+/<br \/>/, но если вы пытаетесь использовать регулярное выражение в HTML, вы, скорее всего, делаете что-то неправильно.

Редактировать: Немного более надежный шаблон, который вы могли бы использовать, если у вас смешанные разрывы:

/(<br\ ?\/?>)+/

Это также поймает <br/> и <br>, что может быть полезно в некоторых случаях.

 17
Author: Williham Totland, 2011-10-12 10:15:21
$html = preg_replace('#(<br */?>\s*)+#i', '<br />', $html);

Это позволит поймать любую комбинацию <br>, <br/>, или <br /> с любым количеством или типом пробелов между ними и замените их одним <br />.

 30
Author: FtDRbwLXw6, 2011-10-12 10:42:26

(<br />)+

Будет соответствовать им, поэтому вы можете использовать preg_replace для их замены (не забудьте правильно экранировать символы).

 0
Author: m.edmondson, 2011-10-12 10:15:19