[PHP] replace probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
PHP:
1
$message = preg_replace("#\[QUOTE=(.*)\](.*)\\[\/QUOTE\]/#si","<ul><sub>\\1 schreef:</sub><hr>\\2<hr></ul>",$message);


deze replaced [quote=waarde] maar als ik heb [quote=waarde][b] dan doet die het niet, hoe kan ik dit verhelpen ?

Acties:
  • 0 Henk 'm!

Verwijderd

lijkt mij dat .* hier iets te greedy is....
Als je er .*^\] vak maakt zou het moeten werken denk ik...
(als dit de juiste syntax is tenminste... ik bedoel dus: alles behalve ]

Acties:
  • 0 Henk 'm!

  • Shagura
  • Registratie: Augustus 2001
  • Laatst online: 14-09 08:25
Verwijderd schreef op 06 January 2003 @ 15:13:
lijkt mij dat .* hier iets te greedy is....
Als je er .*^\] vak maakt zou het moeten werken denk ik...
(als dit de juiste syntax is tenminste... ik bedoel dus: alles behalve ]
Het lijk mij dat het dan eerder het volgende is, maar het idee is goed :)

PHP:
1
$message = preg_replace("#\\[QUOTE=([^\]]*)\](.*)\\[\/QUOTE\]/#si","<ul><sub>\\1 schreef:</sub><hr>\\2<hr></ul>",$message);


regular expressions pakken namelijk de langst mogelijke string en zal anders dus [quote=waarde][b] pakken ipv [quote=waarde]

[ Voor 25% gewijzigd door Shagura op 06-01-2003 15:55 ]


Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

ipv (.*) (.*?) gebruiken... voor minst greedy

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Tot nu toe heeft nog niks gewerkt.

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Shagura schreef op 06 januari 2003 @ 15:23:
[...]

regular expressions pakken namelijk de langst mogelijke string en zal anders dus [ quote=waarde][b] pakken ipv [ quote=waarde]
maar dan wou de waarde van quote waarde][b zijn maar dat doet die nog helemaal niet hij doet helemaal niks

Acties:
  • 0 Henk 'm!

Verwijderd

Mag ik hier een heel klein sub-vraagje stellen?
wat is het verschil tussen preg_replace() en ereg_replace() ?

Acties:
  • 0 Henk 'm!

  • Joror
  • Registratie: Augustus 2001
  • Laatst online: 11-03-2017

Joror

the eternal lurker

Tis dat .* ook ]jes pakt.. dus maken we ervan [^\]]*, wat betekent: 'alle tekens die geen ] zijn'. Dus:

PHP:
1
2
$message = preg_replace("#\\[QUOTE=([^\]]*)\](.*)\\[\/QUOTE\]/#si",
"<ul><sub>\\1 schreef:</sub><hr>\\2<hr></ul>",$message);


edit:

Keek nog eventjes het tweede voorbeeld van Shagura door en zag dat die hetzelfde deed, enkel dat hij een typo had gamaakt :)

[ Voor 36% gewijzigd door Joror op 06-01-2003 15:51 ]

nada aka zilch, formerly known as zip


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 06 januari 2003 @ 15:34:
Mag ik hier een heel klein sub-vraagje stellen?
wat is het verschil tussen preg_replace() en ereg_replace() ?
uit de manual
preg_replace(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg_replace().

preg_replace gebruikt perl reg ex en ereg_replace gebruikt posix comp. reg ex
Pagina: 1