Avatar billede dugi Nybegynder
15. marts 2007 - 15:13 Der er 5 kommentarer

Fange alle <img> og lave et array med url og width/height

Hejsa,

Jeg står og skal bruge jer eksperters hjælp. Jeg har skal have lavet et regex, som fanger alle <img> i en given tekst. I det <img> skal den "fange" src="", samt width="" og height="". Det skal nævnes at der sagtens kan være flere <img> i en tekst end blot et, så den skal udskrive et array ala.

$found = array(
                  [0] = array(
                                'src' => 'http://www.eksperten.dk/img/epro.png'
                                'width' => '120'
                                'height' => '40'
                                'img' => '<img src="http://www.eksperten.dk/img/epro.png" width="120" height="40">
                              )
                  [1] = array(
                                'src' => 'http://www.eksperten.dk/img/elogo.png'
                                'width' => '99'
                                'height' => '110'
                                'img' => '<img src="http://www.eksperten.dk/img/elogo.png" width="99" height="110">
                              )
              )

Den opmærksomme koder, har måske på den måde jeg har skrevet array'et set at jeg koder i PHP, hvis det skulle være til nogen nytte :)

På forhånd tusind, mange gange tak.

Med venlig hilen
Morten
Avatar billede jensgram Nybegynder
16. marts 2007 - 10:47 #1
Jeg ville først finde alle <img>-tags, smide dem i et array og så arbejde videre derfra - det vil gøre det hele noget nemmere, tror jeg:


preg_match_all('/<img [^>]+>/is', $html, $imgs);

foreach ($imgs as $img) {
    // her skal de enkelte tags bearbejdes:
    print $img . "\n";
}
Avatar billede jensgram Nybegynder
16. marts 2007 - 10:49 #2
Ex:

preg_match_all('/<img ([^>])+>/is', $html, $imgs, PREG_SET_ORDER);

foreach ($imgs as $img) {
    // her skal de enkelte tags bearbejdes:
    print $img[1] . "\n"; // dette er attributterne
}
Avatar billede dugi Nybegynder
16. marts 2007 - 11:47 #3
Jeg har faktisk i mellem tiden, fået læst mig frem til et regex, der kan gøre det hele i på en linie uden en foreach() løkke - den ser således ud:

preg_match_all('|<img.*?src="([^"]*)".*?width="([0-9^"]*)".*?height="([0-9^"]*)".*?/?>|s', $input, $match, PREG_SET_ORDER);
Avatar billede jensgram Nybegynder
16. marts 2007 - 12:19 #4
Jep - hvis rækkefølgen altid er src-width-height ;)
Avatar billede jensgram Nybegynder
29. april 2007 - 15:36 #5
Lukketid?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester