[PHP] regex(eregi_replace).

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kan helaas de topic titel niet verduidelijken.

Ik heb een aantal lijntjes codering geschreven om net zoals hier op GOT om mijn eigen geschreven forum functies te gebruiken in de vorm van tags.

Nu zit ik met een klein probleem(code volgt)

code:
1
$message = eregi_replace("\\[img width=([0-9]+)\040height=([0-9]+)\]([a-zA-Z]+)://([0-9a-zA-Z/S/./-]+)\\[/img\]", "[img]\"http://\\4\"[/img]", $message);


Nu werkt dit lijntje 'perfect' behalve dan dat de text tussen de tags([img width=xx height=xx][/img]) perse http:// moet bevatten.

Dat heb ik opgelost door gewoon dit boven deze eerste lijn codering te plaatsen

code:
1
$message = eregi_replace("\\[img width=([0-9]+)\040height=([0-9]+)\]([0-9a-zA-Z/S/./-]+)\\[/img\]", "[img]\"http://\\3\"[/img]", $message);


maar goed, dat is nou niet echt netjes te noemen.

Mijn vraag is dus nu, kun je in regex een soort van if regels gebruiken zodat 1regel codering genoeg is om MET http:// EN zonder http:// te parsen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

ja, door de http:// optioneel te maken; ik gebruik voor mezelf deze:
PHP:
1
$content = preg_replace('/\\[img=([0-9]{1,3}),([0-9]{1,3})\](http:\/\/)??(.+)\\[\/img\]/Ui', '[img]"http://$4"[/img]', $content);

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

je zou het kunnen proberen met conditional subpatterns, maar ik denk dat ik zou kiezen voor twee reguliere expressies. Dat is denk ik iets makkelijker :) Maar t is maar net wat je fijn vindt.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 07 februari 2003 @ 19:25:
je zou het kunnen proberen met conditional subpatterns, maar ik denk dat ik zou kiezen voor twee reguliere expressies. Dat is denk ik iets makkelijker :) Maar t is maar net wat je fijn vindt.
// edit:
oh ja, wat crisp zegt kan ook wel ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 07 februari 2003 @ 19:24:
ja, door de http:// optioneel te maken; ik gebruik voor mezelf deze:
PHP:
1
$content = preg_replace('/\\[img=([0-9]{1,3}),([0-9]{1,3})\](http:\/\/)??(.+)\\[\/img\]/Ui', '[img]"http://$4"[/img]', $content);
Aha! bedankt, ik kwam er dus niet achter hoe ik een deel optioneel kon maken!.