[PHP] Functie gebruiken in preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 17-09 11:07
Hallo ik heb een probleem met de onderstaande code:

code:
1
2
3
4
5
6
7
8
<?php
function parse_image ($img,$max_size)
{
   
}

$string = preg_replace("#\[img\](http)(.+?)\[/img\]#is",parse_image('\\1\\2',$max_size),$string);
?>


Het doel is dat ik de link naar het plaatje kan gebruiken in een functie, maar ik krijg rare resultaten.

Met bijvoorbeeld return krijg ik wel netjes de link terug, maar gooi ik het in een andere functie of doe ik die($img) dan krijg ik (bij getimagesize) getimagesize(\1\2);

Heeft iemand misschien een idee hoe ik de input gewoon als een string kan laten behandelen?

Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Ten eerste, je hooks naar de matches worden natuurlijk pas geparsed nadat de functie uitgevoerd is. Dus dat zal hoe dan ook niet werken.

Je kan dit oplossen met preg_replace_callback (goh..). Maar ik raad je aan eerst jezelf eens te verdiepen in hoe functie-aanroepen werken en daarna hoe de php manual werkt.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 17-09 11:07
Hmmm, ik zit hier al de hele dag naar te kijken.

preg_replace_callback doet ook niet wat ik precies wil.

Nu krijg ik de bb-codes ook weer terug waar hij op parsed.

Maar ik zal het nog maar eens bekijken, uiteraard zijn oplossingen altijd welkom.

Acties:
  • 0 Henk 'm!

  • Naatan
  • Registratie: September 2006
  • Laatst online: 05-05-2010

Naatan

Systeem Beheerder

euh preg_replace_callback doet exact wat je wilt (tenminste wat je omschrijft)

code:
1
2
3
4
5
6
$string = preg_replace_callback("#\[img\](http)(.+?)\[/img\]#is",'parse_image',$string);

function parse_image ($array)
{
   $image = $array[1].$array[2];
}

Naatan.com - Blog & Wordpress Plugins | Divia-CMS.com (OpenSource) - Currently Recruiting!


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 17-09 11:07
Ja, dit werkt zo wel, maar ik heb meerdere argumenten voor m'n functie (zie TS).

En parsed hij de [img] tags ook nog mee, ik heb nu ondertussen het geheel opgelost met create_function() als callback.

En ik filter de [img] tags met een str_replace(). Of is daar een andere methode voor?

Verder werkt het geheel nu wel! :D

Bedankt voor de oplossing _/-\o_

Acties:
  • 0 Henk 'm!

  • Naatan
  • Registratie: September 2006
  • Laatst online: 05-05-2010

Naatan

Systeem Beheerder

je kunt de img tags al wegfilteren met de preg_replace maar met str_replace is op zich ook niks mis, er zullen echter mensen zijn die zeggen dat het 'niet mooi' is.

Naatan.com - Blog & Wordpress Plugins | Divia-CMS.com (OpenSource) - Currently Recruiting!

Pagina: 1