Autor Zpráva
Sylar
Profil
Zdravím,
potřeboval bych rozdělit string obsahující html dle nadpisů a odstavců. Pokud budou tagy vnořené, vzal by se pouze rodič. V případě, že by text neobsahoval žádný odstavec ani nadpis, měl by se vrátit celý string, tak jak byl na vstupu.
Hledal jsem jak by to šlo nejlépe a asi přes preg_split, ale nedaří se mi vymyslet ten samotný regex.

Např. z tohoto vstupu:
<p>text</p><div class="main"><span>a b c d e f g h i j</span><h3 class="nadpis-h3" style="font-weight: bold;">h3 header</h3><div><p>Text text text <b>bold text</b> text text <i>italic text</i> <p>p inside p</p> text text text.</p> Text outside paragraph</div></div>
bych potřeboval tento výstup:
$output[0] = '<p>text</p>';
$output[1] = '<div class="main"><span>a b c d e f g h i j</span>';
$output[2] = '<h3 class="nadpis-h3" style="font-weight: bold;">h3 header</h3>';
$output[3] = '<div>';
$output[4] = '<p class="paragraph-p" style="font-size: 80%;">Text text text <b>bold text</b> text text <i>italic text</i> <p>p inside p</p> text text text.</p>';
$output[5] = ' Text outside paragraph</div></div>';
juriad
Profil
Na toto nejsou regulární výrazy vhodné. Načti celý string jako HTML do DOMu a pak s ním pracuj.
http://www.php.net/manual/en/domdocument.loadhtml.php
Bude ti stačit skoro jen projít seznam childNodes.
Sylar
Profil
juriad:
OK, to vypadá, že bude fungovat. Děkuji za odpověď.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: