[PHP] functie parameter by reference in preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Nou kwam ik er laatst achter dat je in preg_replace functies kon laten uitvoeren waar ik dankbaar gebruik van maak. Maar is het ook mogelijk om een parameter by refenrece mee te geven aan die funtie?

PHP:
1
2
3
4
5
6
7
8
9
function update_image_use($id, &$image_in_use)
{
  $image_in_use .= "$id ";
}

$pattern[0] = "'\[img=(\d+)\]'sie";
$replace[0] = "update_image_use('\\1', {$image_in_use})";

$content = preg_replace($pattern, $replace, $content);


Ik krijg hier een foutmelding op...
Fatal error: Failed evaluating code: update_image_use('1', )
Korte uitleg:

Wat ik hier mee wil is alle afbeelding nummers vinden in een tekst.
"Dit is tekst met hier [img=2] een afbeelding. [img=4]"
Dan moet hij dus als resultaat 2 en 4 geven.

[ Voor 28% gewijzigd door Fles op 14-07-2004 18:09 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

Als je iets wilt vinden, waarom gebruik je dan replace?
Ik zou gewoon preg_match_all gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 10:03
Kan niet.

Bij reference kan alleen met echte variabelen, niet met constanten. De function preg_replace geeft de gevonden match als constante mee aan de functie.

Oplossing: maak $image_in_use global, haal 'm weg uit de functie parameters en het moet werken.

[ Voor 24% gewijzigd door mjax op 14-07-2004 19:12 ]