Autor | Zpráva | ||
---|---|---|---|
Snake.AAS Profil * |
#1 · Zasláno: 16. 8. 2008, 22:12:24
Zdravíčko,
regulárni výrazy se tu propírají celkem často, na tohle jsem hledal odpověd, nicméně nepříliš úspěšně... když mám $text=eregi_replace('\[color="([a-zA-Z0-9#]*)"\](.*)\[/color\]',"<span style=\"color:\\1\">\\2</span>", $text); tak to bez problemu funguje... akorát, ze to hledá nejdelší možný vyskyt (nenasytny kvantifikator .*) upravim to na (.*?) a hodi to chybu... upravim to na $text=eregi_replace('\[color="([a-zA-Z0-9#]*)"\](.*)\[/color\]/u',"<sp an style=\"color:\\1\">\\2</span>", $text); a hodi to znova chybu... už opravdu nevim jak ho přesvědčit, aby se přepl do líného módu... zkusil jsem si i kleknout a nic... a použít negaci ([ ^\[ ]) nemůžu, bo by mi to mohlo brat i jiná klíčová slova, než např. color teoreticky by to melo fungovat u preg_replace (což je prý i rychlejší), ale to mi zase hazi chybu jinde (neznam přesně syntaxi regularu u preg) za rady budu nesmírně vděčen... vsadím se, že na to existuje naprosto jednoduche řešení... |
||
Mastodont Profil |
#2 · Zasláno: 16. 8. 2008, 22:20:09
Pokud vím, tak u POSIX výrazů žádný líný mód není možný a říká to i Wiki:
An example of functionality possible with Perl but not POSIX-compliant regular expressions is the concept of lazy quantification http://en.wikipedia.org/wiki/Regular_expression Takže PREG funkce jsou tvůj kámoš ... |
||
Snake.AAS Profil * |
#3 · Zasláno: 16. 8. 2008, 22:26:40
oukej... tak jdu studovat. díky
|
||
Časová prodleva: 17 let
|
0