[PHP] GetImageSize icm Regexp

Pagina: 1
Acties:

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 20-08 21:59

BierPul

2 koffie graag

Topicstarter
Het meest rotte in mn forum vindt ik nog de tabelverneukende plaatjes.

Nu heeft PHP de mooie functie GetImageSize en die zou ik graag inpassen

Op zicht leek het me niet te lastig maar de waarde tussen
[img]en[/img] krijg ik niet in een var heeft iemand een ID hoe dit te fixen valt :?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

$plaatje = "wat tussen [img] en [/img] staat" ;

$grote = GetImageSize ("$plaatje");

if($grote[0] > 410 ) {

$breedte = "width=410";

}

else {

$breedte = "";

} 

echo("[img]'$plaatje'[/img]");

?>

heb het maar ff tussen code gezet want [php] ging een beetje stoer doen
:)

Ja man


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
PHP:
1
<?$text = "wat tussen [img]plaatje.gif[/img] staat";if (eregi("\\[img\]([^\\[\]])\\[/img\]",$text,$regs)){  $plaatje = $regs[1];  $grootte = GetImageSize($plaatje);  if($grootte[0] > 410 )  {    $breedte = " width=\"410\"";  }  else  {    $breedte = "";  }  echo "[img]\"".$plaatje"\"".$breedte.">";}?[/img]

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

edit: ff foutje weggehaald ...

Ja, daarvoor hebben we de 'e' modifier.

Deze modifier verplaatst in een preg_replace de ene waarde niet door de andere, maar door het resultaat van een functie.

Hoe doe je dat dan? nou:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
define ( "MAX_SIZE", 410 );

function makeImage ( $img )
{
   list ( $width, $height ) = GetImageSize ( $img );
   
   if ( $width > MAX_SIZE )
   {
    $factor = $width / MAX_SIZE;
    $width  = (int) ( $factor * $width );
    $height = (int) ( $factor * $height );
   }
   return 
    "<img src=\"$img\"" 
   .  " width=\"$width\" height=\"$height\" border=\"0\">";
}

$regex = "!\\[img\](.*)\\[/img\]!e";
preg_replace ( $regex, 'makeImage ( "$1" )', $string );

zoiets, ff uit de losse pols. Kun je overigens ook meer over vinden in de manual: http://www.php.net/pcre

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
je weet dat dit fout gaat met de greedyness he :P

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op vrijdag 01 maart 2002 17:32 schreef Grum het volgende:
je weet dat dit fout gaat met de greedyness he :P
Hehe :)

Voor degene die het probleem niet zien. $regex = "!\\[img\](.*)\\[/img\]!e"; moet worden $regex = "!\\[img\](.*?)\\[/img\]!e"; of je zou met de u modifier kunnen gaan werken.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

don't you just love the disclaimer:
  • [i]ff uit de losse pols[/i]
:D
je hebt wel gelijk :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • PanMan
  • Registratie: November 1999
  • Laatst online: 05-08 11:19

PanMan

Spun!

Een kickje van een oud topic, maar ik zocht zoiets, en zag dat dit ongeveer werkte, maar dat het net fout de geschiedenis in gaat :)

code:
1
2
$width  = (int) ( $factor * $width );
$height = (int) ( $factor * $height );

Moet natuurlijk worden:
code:
1
2
$width  = (int) (  $width / $factor);
$height = (int) ( $height / $factor);

Zo wordt hij ook KLEINER, ipv Groter, wat hij met jou oplossing werd :).

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949

Pagina: 1