Avatar billede Slettet bruger
22. oktober 2009 - 22:07 Der er 8 kommentarer og
1 løsning

Parse side - og få variabler ud fra den

Hej.

Jeg har en hjemmeside som jeg gerne vil parse, og så hive nogle informationer ud af den. Problemet er at jeg ikke kan forudbestemme hvor mange tabeller der er på siden, så den skal kunne gøre det dynamisk.

Det ser således ud:

        <td align="Center">
                    <img id="_ctl0__ctl0_archive1_ddlImages__ctl0_image" class="article_image_list" onclick="java script:loadImage('Billede_0133.jpg', 448, 336)" src="Uploads/Billede_0133.jpg" alt="" border="0" height="75" width="100" />
                </td><td align="Center">

                    <img id="_ctl0__ctl0_archive1_ddlImages__ctl11_image" class="article_image_list" onclick="java script:loadImage('Billede_102.jpg', 640, 480)" src="Uploads/Billede_102.jpg" alt="" border="0" height="75" width="100" />
                </td><td align="Center">
                    <img id="_ctl0__ctl0_archive1_ddlImages__ctl22_image" class="article_image_list" onclick="java script:loadImage('Billede_146.jpg', 640, 480)" src="Uploads/Billede_146.jpg" alt="" border="0" height="75" width="100" />
                </td><td align="Center">
                    <img id="_ctl0__ctl0_archive1_ddlImages__ctl33_image" class="article_image_list" onclick="java script:loadImage('Billede_189.jpg', 640, 480)" src="Uploads/Billede_189.jpg" alt="" border="0" height="75" width="100" />
                </td><td align="Center">
                    <img id="_ctl0__ctl0_archive1_ddlImages__ctl44_image" class="article_image_list" onclick="java script:loadImage('Billede_2441.jpg', 480, 640)" src="Uploads/Billede_2441.jpg" alt="" border="0" height="100" width="75" />
                </td>
    </tr><tr>


De informationer jeg gerne vil hente er "Billede_0133.jpg" og "448" og "336". Selvfølgelig skal den gøre det ved alle billederne.
De variabler skal gemmes i en database, men det kan jeg godt selv klare.
Avatar billede ksoren Nybegynder
22. oktober 2009 - 22:08 #1
Har du kigget på fænomenet "regular expressions"?

preg_x funktionerne
Avatar billede Slettet bruger
22. oktober 2009 - 22:12 #2
Ja, og fatter dem ikke.
Avatar billede ksoren Nybegynder
22. oktober 2009 - 22:27 #3
[code]
if(preg_match_all('/loadImage\(\'(.*?)\', (\d+), (\d+)/', $str,

$matches, PREG_SET_ORDER)){
    foreach($matches as $match){
        echo "billede: $match[1] -- width: $match[2] -- height: $match[3]<br>";
    }
}
[/code]
Avatar billede ksoren Nybegynder
22. oktober 2009 - 22:28 #4
Eksperten er sørme dygtig. Kan du tyde de mærkelige tegn?
Avatar billede arne_v Ekspert
22. oktober 2009 - 22:29 #5
Mit forslag:

preg_match_all("/loadImage\('([^']+)', (\d+), (\d+)\)/is", $html, $matches);
for($i = 0; $i < count($matches[0]); $i++) {
    echo $matches[1][$i] . ' ' . $matches[2][$i] . ' ' . $matches[3][$i] . "\r\n";
}
Avatar billede Slettet bruger
22. oktober 2009 - 22:40 #6
$html = fopen("side", "r");

preg_match_all("/loadImage\('([^']+)', (\d+), (\d+)\)/is", $html, $matches);
for($i = 0; $i < count($matches[0]); $i++) {
    echo $matches[1][$i] . ' ' . $matches[2][$i] . ' ' . $matches[3][$i] . "\r\n";
}

Får denne fejl: Warning: preg_match_all() expects parameter 2 to be string, resource given in /var/www/ree.php on line 5
Avatar billede arne_v Ekspert
22. oktober 2009 - 22:41 #7
$html = fopen("side", "r");

->

$html = file_get_contents("side");
Avatar billede Slettet bruger
22. oktober 2009 - 22:43 #8
Mange tak Arne. Det virker. Smid et svar. Hvis du har lyst til at dele med ksoren2, som også deltog, så må i godt det. :)
Avatar billede arne_v Ekspert
22. oktober 2009 - 23:12 #9
svar
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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