login  Naam:   Wachtwoord: 
Registreer je!
 Forum

preg_replace met variabele?

Offline Erwt - 19/09/2009 00:59
Avatar van ErwtPHP beginner Hey allemaal,

Ik wil met preg_replace {TEKST} replacen met een variabele ipv een string. Ik deed het dus zo:

  1. preg_replace('#\{([a-z0-9\-_]*?)\}#is', "$1",$code);


Maar als ik nu $1 als sub-variabelenaam wil gebruiken gaat dit niet.. bijvoorbeeld dit:

  1. preg_replace('#\{([a-z0-9\-_]*?)\}#is', $this->vars["$1"],$code);


En dat werkt dus niet, hoe moet ik dat oplossen?

Alvast bedankt!

7 antwoorden

Gesponsorde links
Offline djb - 19/09/2009 01:02
Avatar van djb PHP beginner
  1. $this->vars[$1]
al geprobeerd?

Greets Jeroen
Offline Erwt - 19/09/2009 01:06
Avatar van Erwt PHP beginner Nee dat werkt niet, standaard gebruik je de $1 in een string en als variabele mag je niet gewoon een letter gebruiken.
Offline ArieMedia - 19/09/2009 09:51
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Erwt schreef:
Nee dat werkt niet, standaard gebruik je de $1 in een string en als variabele mag je niet gewoon een letter gebruiken.
Om een variabele uit een preg_match te halen gebruik

\\1
Offline Erwt - 19/09/2009 17:57
Avatar van Erwt PHP beginner Dat gebruik ik nu, maar telkens is het zo dat hij OF leeg blijft (de titel) of de titel wordt:

$this-> blabla.. dus gewoon de php code.
Offline Martijn - 19/09/2009 18:28 (laatste wijziging 19/09/2009 18:28)
Avatar van Martijn Crew PHP mssn PHP.net: preg_replace_callback ff checken?
Offline Erwt - 19/09/2009 21:50
Avatar van Erwt PHP beginner
  1. $this->code = preg_replace_callback('@\{(.+?)\}@i',create_function('$matches', 'return $vari[$matches[1]];'),$code);


Maar nu kent hij $vari niet.. en $this kan ik ook niet binnen de create_function gebruiken.. dus hoe los ik dit op in een OOP omgeving? (ook al is het geheel niet OOP-valid)
Offline Richard - 04/12/2009 11:44
Avatar van Richard Crew algemeen Goed, zal ik het toch maar verklappen?
Een heel simplistische opzet:
  1. <?php
  2. class Blaat {
  3. protected $code;
  4. protected $vars = array();
  5.  
  6. function dit() {
  7. $this->code = preg_replace_callback('~{([a-zA-Z0-9_-]*)}~', array($this, 'replace'), $this->code);
  8. }
  9.  
  10. function replace(array $match) {
  11. return $this->vars[$match[1]];
  12. }
  13. }

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s