Avatar billede cyberesben Nybegynder
10. maj 2003 - 19:14 Der er 2 kommentarer og
1 løsning

Regular Expressions, udtræk af selve indholdet fra et website...

Jeg er ved at lave et script som går ind på en URL på et bestemt website, og derefter henter nogle data som den smider i min database.

Jeg ved udemærket hvordan jeg får den til at hente en URL over i en string-variabel og gemme det i databasen...

Problemet er at jeg ikke skal have hele sidens HTML kode med, altså ikke header og footer, men kun selve indholdet...

Derfor ville jeg gerne have et forslag til en reg. exp. som gjorde følgende:

Den parser den HTML kode som er hentet fra en URL, og

når den støder på følgende kode:
- - - - - - - -
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="5"></td>
    <td>
- - - - - - - -
begynder den at gemme det som står efter koden, indtil den kommer til

- - - - - - - -
    </td>
    <td width="5"></td>
  </tr>
</table>
- - - - - - - -

Dvs. at den smider hele sektionen med sidens unikke indhold over i en variabel som jeg så kan arbejde videre med...

Skriv endelig hvis der er noget du/i ikke forstår, på forhånd tak!
Avatar billede mjl Nybegynder
10. maj 2003 - 19:20 #1
Måske dette:

<?php
$GrabURL = "http://www.noget.dk";  //-  Complete URL Of The Page Your Grabbing From!
$GrabStart = "</td><td class=\"navText2\" align=\"center\" valign=\"bottom\">";  //- HTML Code To Start Grab. Must Be A Unique Bit Of Code!
$GrabEnd = "<font size=1><a href=http";  //- HTML Code To End Grab. Must Be A Unique Bit Of Code!


$OpenFile = fopen("$GrabURL", "r");
$RetrieveFile = fread($OpenFile, 200000);
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $RetrieveFile, $DataPrint);

fclose($OpenFile);
echo $DataPrint[1];
?>
Avatar billede cyberesben Nybegynder
10. maj 2003 - 19:25 #2
jeg prøver, tak for det hurtige svar!
Avatar billede melange Nybegynder
10. maj 2003 - 21:27 #3
Her vil jeg lige poientere noget.
mjl's kode vil virke i de fleste tilfælde, men hav i baghovedet at Reg.Exp er meget grådig, og tager alt hvad den kan. forekommer $GrabEnd flere gange i filen, vil mjl's kode tage alt fra $GrabStart til den *sidste* $GrabEnd, og *ikke* den første, som man skulle tro.

Nu er jeg ikke voldsomt stært i Reg.Exp, men en måde jeg *mener* man kan løse det på er at omformulere eregi() til dette:
$GrabData = eregi("$GrabStart([^$GrabEnd]+)", $RetrieveFile, $DataPrint);

så burde Reg.Exp tage alt fra $GrabStart lige ind til den støder på $GrabEnd, og så burde det ikke gøre nogen forskel om der forekommer flere $GrabEnd i filen.
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