[php] preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik werk nu aan een forum en gebruik daarbij de hele tijd preg_replace. Nu heb ik de volgende opdracht en snap ik niet waarom het niet werkt.

PHP:
1
2
$bericht = ":$";
echo preg_replace("(:\$)","maakt niet uit wat",$bericht)


en het resultaat is toch gewoon :$ terwijl ik in de pattern de $ toch weg escape... het zal wel iets heel stoms zijn maar ik zit er nu al een half uur naar te staren. Dus hoop ik dat iemand hier ziet wat ik fout doe.

[ Voor 6% gewijzigd door Verwijderd op 02-04-2004 03:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok ik heb het al ... sorry voor het onnodige topic. Nog even voor de search

het zoekpatroon moet dus zijn (:\\$)

1 keer escapen voor php variabel (is ook $)
1 keer escapen omdat $ een special charakter is in reguliere expressie.

Acties:
  • 0 Henk 'm!

  • sjokki
  • Registratie: Juli 2002
  • Niet online
Voordat de regular expression aan de regex-engine wordt doorgegeven wordt de string ook door PHP geïnterpreteerd. Omdat de $ in een string met dubbele quotes een speciale werking heeft wordt de \ gezien als escape en wordt dus weggehaald. Om het wel te laten werken kan je nog een \ toevoegen. Of je gebruikt enkele quotes.

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Zoals je kunt lezen in de PHP handleiding over PCRE Syntax wordt elk pattern begonnen en geëindigd met een /, dan is dat dubbel escapen ook niet meer nodig.

http://nl2.php.net/manual/en/pcre.pattern.syntax.php

[ Voor 16% gewijzigd door MatHack op 02-04-2004 08:28 . Reden: Linkje toegevoegd ]

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Als je de pattern tussen enkele quotes zet, gaat het wel goed met één slash. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Ik neem aan dat dit een versimpeld voorbeeld is, want dit werkelijk je werkelijke code is vraag ik mij heel erg af waarom je niet gewoon gebruik maakt van str_replace.. :?
PHP:
1
echo str_replace(':$','maakt niet uit wat',$bericht);
Pagina: 1