PHP - Usunięcie tagu BR wewnątrz tagu UL

0

Cześć.

Walczę od dłużej chwili z poprawnym utworzeniem funkcji preg_replace, która pomoże mi usunąć wszystkie tagi BR znajdujące się wewnątrz tagu UL, przykład:

Test< br >
< ul >
< li >
Test< br >
< /li >
< /ul >

Gdzie "Test< br >" powinien zniknąć (celowo dodałem spacje przed ">", aby kod się nie wywołał).

Stworzyłem coś takiego:

$param_array['description'] = preg_replace('/(?<=<ul>|<\/li>)([\s*<br>\s*|\s*<br\/>\s*|\s*<br \/>\s*]+)(?=<\/ul>|<li>)/is', "$2", $param_array['description']);

niestety kompletnie nie działa. Może ktoś coś podpowiedzieć?

Dzięki.

0
/(<ul.*?>.*?)(<br\s?\/>)(.*?<\/ul>)/

<ul.*?> - tag otwierający ul, który może mieć dowolną ilość atrybutów: <ul> <ul class="test"> <ul class="test" id="foo">
.*? - cokolwiek do momentu, aż nie znajdziemy następnego elementu, który pasuje (do d**y wytłumaczyłem, wiem)
<br\s?\/> - <br> <br /> <br/>
.*? - jak wyżej
<\/ul> - tag zamykający ul

Tutaj możesz potestować.

Grupy, są po to, żebyś mógł się do nich odnieść używając preg_replace:

// $1 to wszystko przed br ograniczone tagiem otwierającym, a $2, to wszystko po br ograniczone tagiem zamykającym
preg_replace($pattern, "$1$2", $html);

1 użytkowników online, w tym zalogowanych: 0, gości: 1