ugrás a tartalomhoz

Egyszerű regexp kérdés

mahoo · 2011. Nov. 2. (Sze), 19.42
Már szégyelem feltenni a kérdést, de nem jutottam dülőre az alábbi feladattal:

"<div>

fd

df

</div>"

És ebből szeretném kinyerni a div-en belüli tartalmat. Az üres és új sorok miatt nem tudtam megoldani :(, pedig biztos vagyok benne, hogy egyszerű.



Illetve, az normális, hogy, ha ez a string-em

"<div>

hj

<div>fd</div>

<div>df</div>

</div>"

és szükségem van az összed nyitó/záró div-re valamint a div-ek tartalmára is - azaz 3 elemű tömbre, akkor az én általam megírt preg_match-et egy while cikusba kellett tennem, mert először csak a 2 belső div-et találta meg (majd töröltem őket) és utána már a külső, befoglaló div-et is?
 
3

Regexp-pel sehogy

N0r3i · 2011. Nov. 2. (Sze), 20.45
Szia!

Ne használj regexp-et a HTML parsoláshoz!
Hogy miért? Itt egy kolléga hosszan sorolja.

És akkor hogy?
Például a DOMDocument segítségével.

Esetleg keress egy HTML document parser-t, elég sok ilyen van (pl. DomParser, querypath, simplehtmldom, ...)!

Üdv:
Norbi
1

$div_en_belul =

kuka · 2011. Nov. 2. (Sze), 20.32

$div_en_belul = preg_replace('|.*<div>(.*?)</div>.*|s', '$1', "<div>\n\nfd\n\ndf\n\n</div>");
Illetve, az normális, hogy, ha ez a string-em
Nem. Nem normális a HTML parser feladatát reguláris kifejezéssel végeztetni. A leírt megoldásod valószínűleg azonnal felmondja a szolgálatot amint a sortörések változnak. Ha preg_match_all()-et használsz és minden taget kivájsz, majd végigjárod az eredményt, hogy megtaláld a nyitó-záró párokat és hierarchikus szerkezetbe rendezd őket, akkor jobb esélyed van a sikerre. Persze a szintaktikailag hibás HTML-től ez a megközelítés is összedől.
5

Rekurzív regex-el meg lehet

inf · 2011. Nov. 2. (Sze), 23.26
Rekurzív regex-el meg lehet oldani viszonylag egyszerűen... Kérdés, hogy mi értelme van... Ami számomra izgalmas az a nodejs megközelítése, mert ahhoz hozzá lehet csapni jquery-t is... :-)
2

Ne reguláris kifejezéssel

Poetro · 2011. Nov. 2. (Sze), 20.45
Ne reguláris kifejezéssel módosítsd, erre valók a DOM függvények, illetve van rá rengeteg keretrendszer, amivel kényelmesebbé tudod tenni a dolgodat. Ilyen keretrendszerek: QueryPath, phpQuery, PHP Simple HTML DOM Parser, illetve használhatod a PHP beépített DOM függvényeit. Reguláris kifejezéseket erre a témára semmiképp nem ajánlanék.
4

Köszönöm Nektek a gyors

mahoo · 2011. Nov. 2. (Sze), 21.11
Köszönöm Nektek a gyors választ! Azt hittem, hogy megfelelő eszközt akartam használni, de most már látom, hogy nem.

A PHP Simple HTML DOM Parser szimpatikus is, kipróbálom...
Köszönöm még1x.