Autor | Zpráva | ||
---|---|---|---|
Reg Profil |
#1 · Zasláno: 19. 10. 2005, 16:30:13
Potřebuju zapsat do regexpu něco jako že v tom daném úseku NESMÍ být obsažen řetězec např. </div>.
Pokud by šlo o jeden znak, je to takto: [^x], ale o nějakou skupinu znaků??? Pozor! Vůbec to nemyslím jako v celym řetězci ale v nějakym úseku, který nahrazuju (ereg_replace) Příklad: Potřebuju nahradit tag <div> tagem <span class="div"> a samozřejmě jeho ukončením. má to tedy převíst např.: Tento <div>text</div> atp. na toto: Tento <span class="div">text</span> atp. Toto by šlo zapsat takto: ereg_replace("<div(.*)>(.*)</div>",'<span class="div"\\1>\\2</span>',"text"); Ovšem tento zápis nefunguje, pokud je v textu obsaženo více "divů", příklad: Toto: "text <div>text</div> text <div>text</div> text" to nahradí tímto: "text <span class="div">text</div> text <div>text</span> text" ovšem má to nahradit tímto: "text <span class="div">text</span> text <span class="div">text</span> text" Toto by šlo zřejmě opravit tím, že v regexpu místo (.*) mezi divy napíšu, že to nesmí obsahovat ukončující tag </div> (nemůžu tam napsat např. [^<>] protože uvnitř může být jiný tag), OVŠEM OTÁZKOU ZŮSTÁVA: JAK? Omlouvám se za to že to je tak dlouhé, ale když jsem se na to ptal někoho nejmenovaného tak to nemohl pochopit. ;) |
||
halogan Profil |
#2 · Zasláno: 19. 10. 2005, 17:27:47 · Upravil/a: halogan
preg_replace("/<div(.*)>(.*)</div>/U",'<span class="div"\\1>\\2</span>',"text"); |
||
Reg Profil |
#3 · Zasláno: 19. 10. 2005, 17:30:16
OK, dík a nějaké vysvětlení pro blbé jako já???
|
||
halogan Profil |
#4 · Zasláno: 19. 10. 2005, 21:32:19
.* u POSIX (ereg) nabehne na konec retezce a pak jde smerem k zacatku dokud neuspokoji dalsi cast masky. PCRE (preg_*) vsak nabizi mod U (ungreedy), ktery si veme jen tolik, kolik mu staci. Vice na Interval.cz a PCRE serialu.
|
||
Falocn16 Profil * |
#5 · Zasláno: 19. 10. 2005, 21:37:58
aj ja mam problem s regularnymi vyrazmi. chcem spravit,aby sa nemohlo zadat ako nick ine znaky ako a-z, cisla a _ . v podmienke mam zapisane
ELSEIF ( !ereg("[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ _]", $_POST[nick]) ) Ale pokial sa daju pismena a potom nejaky ten specialny znak, tak to zoberie. A tiez neviem, ako zapisat, aby mohlo byt iba 9 cisel, pripadne menej, inak to vyhodi chybu. Za help budem moc moc vdacny. A v pripade vysvetlenia ako sa to ma vlastne spravne zapisovat este vdacnejsi. ale stacila by aj nejaka dost dobra stranka o tom, ako sa maju regulary zapisovat. diky |
||
Falcon16 Profil |
#6 · Zasláno: 19. 10. 2005, 21:44:12
hups, zle napisany nick, sorry. toto bola odo mna ta blba otazka
|
||
Reg Profil |
#7 · Zasláno: 21. 10. 2005, 14:49:31
ereg("[0-9a-zA-Z _]{1,9}",$_POST['nick'])
to v hranatych zavorkach se da zkratit a to {1,9} znamena ze to muze mit 1-9 znaku (muzes to zmenit). Snad to tak je. |
||
fox Profil * |
#8 · Zasláno: 21. 10. 2005, 14:58:57
ereg("[0-9a-zA-Z _]{1,9}",$_POST['nick'])
to v hranatych zavorkach se da zkratit a to {1,9} znamena ze to muze mit 1-9 znaku (muzes to zmenit). Snad to tak je. ....není. Tomu vyhovuje jakýkoli výraz, kde se opakuje písmeno nebo číslo 1-9x za sebou, ale za tím či před tím může být cokoli... |
||
Reg Profil |
#9 · Zasláno: 22. 10. 2005, 10:23:34
Tak ereg("^[0-9a-zA-Z _]{1,9}$",$_POST['nick'])
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0