[php]getimagesize in preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Hallo,

Ik heb al verscheidene topics gelezen, en ben een stuk verder gekomen, alleen het laatste deel wil niet lukken :S.

Mijn doel is om te kunnen opgeven hoeveel % van de orginele grootte een plaatje is, om te voorkomen dat de layout verneukt word. Dit gaat dus zo:

[img=percentage]locatie[/img]

Percentage is gewoon een getal, zonder %. Ik heb hiervoor de volgende code:

PHP:
1
2
3
4
5
6
7
8
function checkImg ( $1, $2 ) {
   list ( $w, $h ) = GetImageSize ( $2 );
   $w = "$w*$1/100";
   $h = "$h*$1/100";
return "<center>[img]\"$2\"[/img]</center>";
}

$inhoud = preg_replace("_\[img=(.*)](.*)\[/img]_isUe",".checkImg('\\1','\\2').", $inhoud);


Hij geeft de volgende fout:
Parse error: parse error, expecting `')'' in add.php on line 29

Line 29:
function checkImg ( $1, $2 ){

Ik zal er ongetwijfel ontzettend overheen lezen, maar ik kan de fout niet vinden, ik hoop dat jullie me kunnen helpen. Alvast bedankt _/-\o_

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

Verwijderd

Jouw functie variabelen beginnen met een cijfer... magnie! :)

als je ipv. $1 en $2 gewone namen gebruikt (wat ook een stuk overzichtelijker is), zal het wat beter werken.

dus bv:

PHP:
1
2
3
4
5
6
7
8
9
10
<?
function checkImg ( $prct, $img ) { 
   list ( $w, $h ) = GetImageSize ( $img ); 
   $w = $w * $prct / 100; 
   $h = $h * $prct / 100; 
return "<center>[img]\"$img\"[/img]</center>"; 
} 

$inhoud = preg_replace("_\[img=(.*)](.*)\[/img]_isUe",".checkImg('\\1','\\2').", $inhoud);
?> 

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Thanx, wat een stomme fout :p Ik ga het meteen proberen :D

edit

Ohkdan :'(

Kweet niet wat er nou weer fout is :p

Parse error: parse error in add.php(42) : regexp code on line 1

Fatal error: Failed evaluating code: .checkImg('25','img/i15.jpg'). in add.php on line 42

PHP:
1
2
3
4
5
6
7
8
9
function checkImg ( $pctg, $img ) {
   list ( $w, $h ) = GetImageSize ( $img );
   $w = $w * $pctg / 100;
   $h = $h * $pctg / 100;
return "<center>[img]\"$img\"[/img]</center>";
}


$inhoud = preg_replace("_\[img=(.*)](.*)\[/img]_isUe",".checkImg('\\1','\\2').", $inhoud);


Heeft het misschien te maken met de uitkomst van de som? Dat die bijvoorbeeld 10,9 is ofzo?

[ Voor 97% gewijzigd door Roa op 06-02-2003 12:03 ]

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet een beetje opletten met het gebruik van quotjes

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
function checkImg ( $pctg, $img ) { 
   list ( $w, $h ) = GetImageSize ( $img ); 
   $w = $w * $pctg / 100; 
   $h = $h * $pctg / 100; 
return "<center>[img]\"$img\"[/img]</center>"; 
} 


$inhoud = preg_replace("_\[img=(.*)](.*)\[/img]_isU",checkImg('\\1','\\2'), $inhoud);
?> 


daar zit t probleem dus... maar verders weet ik dat die functie niet gaat werken... hij ziet in de functie het 2e argument als \2 (dus dat plaatje kent ie niet). Maar hoe je dat oplost... weet ik niet.
Ik ben niet zo'n ster met regexp's.

edit:
... e weggehaald bij je regexp... anders werkt ie niet met de functie

[ Voor 17% gewijzigd door Verwijderd op 06-02-2003 12:19 ]


Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

PHP:
1
$message = preg_replace("blabla", "function('\\1')", $message);


Werkt in ieder geval. Kijk maar wat je ermee kunt :)

Acties:
  • 0 Henk 'm!

  • Thijs
  • Registratie: April 2000
  • Laatst online: 16-09 10:12
PowerSp00n schreef op 06 February 2003 @ 12:35:
PHP:
1
$message = preg_replace("blabla", "function('\\1')", $message);


Werkt in ieder geval. Kijk maar wat je ermee kunt :)
+1 techpost

Maar goed, zoals genius995 al zegt moet je die puntjes iig weg halen. Die quotes kan je er wel omheen laten staan. En ik denk dat je ook slashes moet gaan zetten voor de single-quotes bij de parameters van je functie. Probeer dit anders eens:

, "checkImg(\'\\1\',\'\\2\')",

of

, checkImg("$1","$2"),
Pagina: 1