Autor | Zpráva | ||
---|---|---|---|
temistokles Profil |
#1 · Zasláno: 2. 11. 2006, 22:17:36
Dobrý deň,
potreboval by som napísať regulérny výraz, ktorý by v PHP našiel a následne odstránil tagy, ktoré sú prázdne. Tj. napríklad: <item></item>. Ďalej by som potreboval odstrániť komentáre, teda <!-- .......... -->. Pomôže mi niekto s týmto regulérnym výrazom/mi? Lebo sám som sa ďaleko nedostal :( Vopred diki. |
||
Casero Profil |
#2 · Zasláno: 2. 11. 2006, 22:22:27
temistokles
ereg("<.+><\/.+>)", $text) ereg("<!--.+-->)", $text) co takto jednoduše?.nestačí |
||
deleted Profil * |
#3 · Zasláno: 2. 11. 2006, 22:31:52
aha.. a ja som sa s tým toľko natrápil.. diki
|
||
deleted Profil * |
#4 · Zasláno: 2. 11. 2006, 22:45:42
No tak sa zdá, že to toho povymazáva až priveľa :)
|
||
Pavel Strejček Profil |
#5 · Zasláno: 2. 11. 2006, 23:14:44 · Upravil/a: Pavel Strejček
Zkus to takhle:
$text = preg_replace('/<!--.*-->/Us', '', $text); 'U' omezí žravost a 's' aby to fungovalo i na přes více řádek. Jinak pregy jsou rychlejší než eregy. |
||
zivan Profil |
#6 · Zasláno: 3. 11. 2006, 14:36:51
Tenhle regularni vyraz nebude fungovat.
Napr. z casti kodu "<div><br></div>" zbyde "<div>" bez ukoncovaciho tagu a to asi neni spravna funkce. Pouzil bych subvyrazy, jen ted netusim, jak se v PHP zapisuji :-( |
||
Pavel Strejček Profil |
#7 · Zasláno: 3. 11. 2006, 15:18:44
zivan
Pokud to bude validní v XHTML "<div><br/></div>" tak na to bych ten výraz od Casera upravil na $text = preg_replace('/<[^\/]+><\/.+>/', '', $text); případně pro ignorování mezer $text = preg_replace('/<[^\/]+>\s*<\/.+>/', '', $text); Ten můj výraz na komentáře je myslím v pohodě. |
||
zivan Profil |
#8 · Zasláno: 3. 11. 2006, 16:58:59 · Upravil/a: zivan
Tak uz jsem to nasel, melo by fungovat toto:
$text = preg_replace('/<([^\/]+)>\s*<\/\1>/', '', $text); Odstrani pouze prazdny stejny tag. Neodstrani ani chybne zapsane "<a></b>". A nepotrebuje validni XHTML. |
||
Pavel Strejček Profil |
#9 · Zasláno: 3. 11. 2006, 17:22:01
zivan
Pro nekvalitní či zastaralý HTML kód to může být užitečné, ale jinak je to v této formě ztráta výkonu. |
||
temistokles Profil |
#10 · Zasláno: 3. 11. 2006, 17:47:29
validne xhtml, to ale nebude :) skor sa jedna o XML.. tie kodiky vyskusam
|
||
Pavel Strejček Profil |
#11 · Zasláno: 3. 11. 2006, 18:01:40
temistokles
Tím lépe, XHTML je jenom podmnožina XML. Možná se budou hodit tyhle funkce, dají se použít na stejnou věc jako ty reguláry: http://www.php.net/domxml Případně XML parser: http://www.php.net/xml |
||
temistokles Profil |
#12 · Zasláno: 3. 11. 2006, 18:22:09
Takže nakoniec som použil tieto výrazy:
$data=preg_replace('/<([^\/]+)>\s*<\/\1>/', '', $data); $data=preg_replace('/<!--.*-->/Us', '', $data); Splo to funguje ako má, pekne Vám všetkým ďakujem. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0