Toon posts:

[PHP] preg_replace met multie dimensionale arrays?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb dit regeltje source code:
code:
1
$this->template=preg_replace("/\%((.|\n)*?)\%/i", "$vars[1]['\\1']", $this->template);

En dit wordt losgelaten op dit:
code:
1
2
3
4
Name: %name%
Email: %email%

Comments: %comments%

En geeft als output:
code:
1
2
3
4
Name: Array['name']
Email: Array['email']

Comments: Array['comments']

Hij lijkt dus al te gaan parsen bij de eerste array, maar de hash array daarna niet. Is dit een bekend probleem of maak ik (zoals gewoonlijk) een stomme fout?

// edit

Ik heb nu ook deze geprobeerd:
code:
1
$this->template=preg_replace("/\%((.|\n)*?)\%/i", $vars[1][\\1], $this->template);

Maar deze laat dan alleen de eerste waarde zien dus 3x de 'name'.

  • tomato
  • Registratie: November 1999
  • Niet online
Kijk eens naar de /e modifier.

Verwijderd

Topicstarter
Ik heb gekeken, maar zie niet echt hoe ik dat zou moeten toepassen. Hij wil nu ook wel de hele array parsen alleen neemt hij elke keer de eerste. In dit geval dus %name%.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
code:
1
2
3
4
$this->template = preg_replace("/\%((.|\n)*?)\%/ie", '$vars[1]["\\1"]', $this->template);
                                 ^ eval modifier
                                     ^ enkele aanhalingstekens, 
                                     anders parst php $vars te vroeg

Verwijderd

Topicstarter
Raar dat PHP daar verschil maakt tussen ' en ". Daar had ik ff niet aan gedacht! |:(

Thx btw

  • Grum
  • Registratie: Juni 2001
  • Niet online
raar :?

'' == literal
"" == parsed

'$bla' == "\$bla"

  • tomato
  • Registratie: November 1999
  • Niet online
Dat hebben ze ook maar van Perl afgekeken :P :X
Pagina: 1