login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Regex IMG's 'bewerken'

Offline Drodr - 01/07/2009 21:34
Avatar van DrodrNieuw lid Hoi,
ik ben echt een prutser in regular expressions, en nu wil ik graag iets doen waarvoor ik het echt nodig heb.
Ik wil in een stuk code alle images opzoeken, er de attributen width, height en src ervan ophalen, en er daarna iets omheen kunnen zetten.
Ik heb al in veel tutorials gekeken, maar ik vind het echt heel lastig, en ik hoop dat er hier iemand is die er veel verstand van heeft, en mij kan helpen.

Bij voorbaat dank,
Drodr

13 antwoorden

Gesponsorde links
Offline marten - 01/07/2009 21:39
Avatar van marten Beheerder
  1. src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\')


Hiermee zoek je alle src informatie uit. Deze is dus makkelijk uit te breiden voor andere attributen.


Offline Drodr - 01/07/2009 21:43
Avatar van Drodr Nieuw lid Is er dan ook een mogelijkheid om van alle bestanden (dus ook png enzo) de SRC uit te lezen?
En als ik de width en height wil, dan kan ik zeker niet gewoon het src veranderen in width door die jpg bmp en gif, weet jij misschien hoe dat dan moet?
Bedankt voor de hulp in ieder geval 
Offline marten - 01/07/2009 21:44
Avatar van marten Beheerder (?:jpg|bmp|gif)

uitbreiden ?

(?:jpg|bmp|gif|png|gif)
Offline Drodr - 01/07/2009 21:48
Avatar van Drodr Nieuw lid Oja logisch sorry beetje stom van mezelf 
Maar weet je dan nog hoe ik de width+ height van de image er uit kan halen en hoe ik iets er om heen kan zetten?
Offline jaronneke - 02/07/2009 08:21
Avatar van jaronneke MySQL interesse PHP.net: getimagesize
Offline Bart - 02/07/2009 08:34
Avatar van Bart PHP expert
Drodr schreef:
Oja logisch sorry beetje stom van mezelf 
Maar weet je dan nog hoe ik de width+ height van de image er uit kan halen en hoe ik iets er om heen kan zetten?
Wat wil je er omheen zetten? Als je er een border oid omheen wilt zetten kan je dit het beste doen met GDLibrary
Offline Drodr - 02/07/2009 11:17
Avatar van Drodr Nieuw lid @jaronneke ah super! nu ben ik er bijna alleen nog iets er om heen zetten, ik zal dit eerst zelf opzoeken, maar als iemand het weet, ik zou je dankbaar zijn als je het hier post! 

@bart ik wil er een <a> omheen zetten. Dus zeg maar om de <img> een url.
Offline Bart - 02/07/2009 11:29 (laatste wijziging 02/07/2009 11:29)
Avatar van Bart PHP expert
  1. <a href="JE_URL_HIER"><img src="IMG_SRC_HIER" width="WIDTH" height="HEIGTH" border="0" alt="" /></a>


Border wel op 0 zetten, anders krijg je er zo'n lelijke border omheen.
Offline Martijn - 02/07/2009 11:54
Avatar van Martijn Crew PHP kun je dan niet beter een regexje maken die de hele img tag neemt, en dan
  1. <a href="JE_URL_HIER"><!-- Hier dus uit je regex halen --></a>

dan heb je alle attributen en width en heigth in 1x....
en dan in je css img{border: 0px;} geven
Offline Martijn2008 - 02/07/2009 13:06
Avatar van Martijn2008 PHP beginner Waarom doet die regex het bij mij niet?

  1. <?
  2.  
  3. if(preg_match (src[^&gt;]*[^/].(?:jpg|bmp|gif)(?:\&quot;|\)), $read))
  4. {
  5. $this->aantalfiles++;
  6. $files['files'][] = $read;
  7. }
  8.  
  9. ?>
Offline Koen - 02/07/2009 13:22
Avatar van Koen PHP expert
  1. <?
  2.  
  3. if(preg_match ("/src[^<]*[^/].(?:jpg|bmp|gif)(?:\"|\))/", $read))
  4. {
  5. $this->aantalfiles++;
  6. $files['files'][] = $read;
  7. }
  8.  
  9. ?>


Neem jij altijd alles letterlijk over?
Offline Drodr - 02/07/2009 14:10 (laatste wijziging 02/07/2009 14:15)
Avatar van Drodr Nieuw lid Ik heb nu een nieuw probleem:
  1. $image = addslashes(<img src="http://gmantv.bravehost.com/myPictures/noob.jpg" title="foo" width="12" height="12">);
  2.  
  3. $src = 'src[[:space:]]?=[[:space:]]?["\']?(.*)["\']?';
  4. $source = preg_match($src,stripcslashes($image),$sourceMatch) ? $sourceMatch[1] : FALSE;


De $src heb ik uit de regex tutorial van deze site gehaald.
Als ik $source doe geeft hij FALSE terug, wat, lijkt mij, niet klopt.
Weet iemand wat er fout is?
Offline ernie - 28/07/2009 23:03 (laatste wijziging 28/07/2009 23:33)
Avatar van ernie Nieuw lid
Drodr schreef:
Ik heb nu een nieuw probleem:
[..code..]

De $src heb ik uit de regex tutorial van deze site gehaald.
Als ik $source doe geeft hij FALSE terug, wat, lijkt mij, niet klopt.
Weet iemand wat er fout is?

Ik weet niet exact wat er mis is, maar je moet er wel op letten dat je quotes (single of double) om letterlijke tekst (in een string) heen zet.

Dit (stukje uit jouw code) is dus fout:

  1. $image = addslashes(<img src="http://gmantv.bravehost.com/myPictures/noob.jpg" title="foo" width="12" height="12">);

Wel goed is:

  1. $image = addslashes('<img src="http://gmantv.bravehost.com/myPictures/noob.jpg" title="foo" width="12" height="12">');

Omdat de letterlijke tekst geen single quote(s) bevat kun je hem tussen single quotes zetten en hoef je geen quotes te escapen (backslash ervoor zetten).

Eventueel is het ook handig om error checking aan te zetten, zodat je automatisch waarschuwingen en (ook 'getolereerde') fouten gemeld krijgt. Dat kan flink helpen bij het zoeken naar fouten.
Een manier om dit in te schakelen (als het niet al aanstaat) is dit bovenaan je code te zetten (er zijn meer manieren):

  1. ini_set ('display_errors', 1);
  2. error_reporting(E_ALL | E_STRICT);


Als alles naar behoren werkt en je krijgt toch nog meldingen haal je het gewoon weer weg en heb je geen last meer van meldingen...

Ik hoop dat je snapt wat ik allemaal zeg 

Succes!



P.S. Regular expressions kunnen (extreem) lastig tot onmogelijk te begrijpen/maken zijn voor beginners. Mocht je het vaker willen gebruiken dan raad ik je sterk aan een boek aan te schaffen. Mijn favoriet is Mastering Regular Expressions door Jeffrey Friedl (O'Reilly press). Regular expressions leren is een investering in jezelf!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.287s