Autor Zpráva
Snake.AAS
Profil *
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
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 *
oukej... tak jdu studovat. díky

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:

0