Avatar billede ofirpeter Nybegynder
10. april 2009 - 10:25 Der er 8 kommentarer og
1 løsning

Klip fra HTML side med PHP

Hej Eksperter,
Jeg står for at skal klippe/klistre en række nyheder fra en anden HTML side med PHP. Siden der skal klippes fra er opbygget med en lang række nyheder sat op på følgende måde:

<h2 class="nyhedsoverskrift">Nyhed 1</h2>
<p class="nyhedsdato">31. marts 2009</p>
<p class="nyhedsresume">Nyhedstekst 1</p>
<p class="mere"><a href="http://www.nyhedslink.dk" title="Titel">Læs mere</a></p>


Jeg ønsker at få følgende ud:
Nyhed 1
31. marts 2009
Nyhedstekst 1
http://www.nyhedslink.dk

Har rodet en masse med det og er kommet frem til følgende, som virker fint.

$start_text = '<h2 class="nyhedsoverskrift">';
$end_text = "</h2>";
$source = file_get_contents('http://www.nyhedsside.com');
$start_pos = strpos($source, $start_text) + strlen($start_text);
$end_pos = strpos($source, $end_text) - $start_pos;
$found_text = substr($source, $start_pos, $end_pos);
echo $found_text;

Har dog brug for at lave en slags løkke som kan udskrive de næste nyhedsoverskrifter. Dette stykke kode tager jo kun den første.

Nogen der kan give et hint?
Avatar billede majbom Novice
10. april 2009 - 11:50 #1
du har ikke mulighed for at få det serveret som XML eller noget andet smart?
Avatar billede ofirpeter Nybegynder
10. april 2009 - 12:17 #2
Desværre, har selvfølgelig fået tilladelse til at bruge det, men der stoppede venligheden :)
Avatar billede coderdk Praktikant
10. april 2009 - 17:22 #3
Prøv:

$cnt = file_get_contents( $url );
if ( preg_match_all( '#"nyhedsoverskrift">(.*?)</h2>.*?nyhedsdato">(.*?)</p>.*?nyhedsresume">(.*?)</p>.*?mere"><a href="(.*?)"#si', $cnt, $m ) )
{
  echo "<pre>";
  var_dump( $m );
  echo "</pre>";
}
else
{
  echo "Fandt intet";
}
Avatar billede ofirpeter Nybegynder
10. april 2009 - 19:40 #4
Hej coderdk,
Det er øjensynligt ret tæt på, der er dog noget der går galt. Kan dog ikke lige gennemskue hvad det er.
Den url jeg benytter er følgende: http://jura.ku.dk/Nyheder/

Outputtet bliver følgende:

array(5) { [0]=> array(96) { [0]=> string(343) ""nyhedsoverskrift">Årets underviser
02. april 2009

I år var det de to vejledere Mikkel Mathias Steinø og Julie Arnth Jørgensen fra CISG-processpilsholdene, der blev kåret som årets undervisere.

string(339) ""nyhedsoverskrift">Er bankkunderne bedre stillet nu?

01. april 2009

Kronik om de første afgørelser efter Roskilde Banks krak af Michael Camphausen, Ph.d.-stipendiat ved Det Juridiske Fakultet

string(359) ""nyhedsoverskrift">FER - Forskningsgruppen for Fast Ejendoms Retsforhold har fået ny hjemmeside
Avatar billede ofirpeter Nybegynder
10. april 2009 - 19:41 #5
(Jeg ved at der ligger et RSS feed på denne side, men bruger bare denne til at teste på)
Avatar billede coderdk Praktikant
10. april 2009 - 20:41 #6
Her er et eksempel (har sat PREG_SET_ORDER på nu):

$url = 'http://jura.ku.dk/Nyheder/';
$cnt = file_get_contents( $url );
if ( preg_match_all( '#"nyhedsoverskrift">(.*?)</h2>.*?nyhedsdato">(.*?)</p>.*?nyhedsresume">(.*?)</p>.*?mere"><a href="(.*?)"#si', $cnt, $m, PREG_SET_ORDER ) )
{
  foreach ( $m as $r )
  {
    echo 'Titel: ' . $r[1] . '<br>';
    echo 'Dato: ' . $r[2] . '<br>';
    echo 'Text: ' . $r[3] . '<br>';
    echo 'Link: ' . $r[4] . '<br><br>';
  }
}
else
{
  echo "Fandt intet";
}
Avatar billede majbom Novice
04. november 2010 - 11:26 #7
kan vi lukke hér?
Avatar billede ofirpeter Nybegynder
13. januar 2011 - 13:45 #8
coderdk: Tak for hjælpen. Svar gerne.
Avatar billede coderdk Praktikant
13. januar 2011 - 18:17 #9
Ok :)
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