Avatar billede Slettet bruger
07. august 2005 - 13:40 Der er 11 kommentarer og
2 løsninger

Hjemmeside scanner

Hej.

Jeg skal hente nogle nyheder fra en ekstern side uden brug af xml. Så jeg vil gerne lige høre hvordan man kan hente tekst der fx ligger mellem <h1> og </h1> på en ekstern side, og måske et lille eksemplel.
Avatar billede Slettet bruger
07. august 2005 - 14:26 #1
Jeg tror det her kan gøre det:

$html = file_get_contents("http://ca.n.dk/brevkasser/GetPost.asp?id=$id");
preg_match("/<h1>\s(.+)</h1>/is", $html, $headline);

echo $headline;

--
pacroon
Avatar billede Slettet bruger
07. august 2005 - 14:27 #2
Hov, du skal så lige rettet det link til der du skal hente html fra :)
Avatar billede nielle Nybegynder
07. august 2005 - 15:43 #3
Hvis der klan være mere end 1 <h1> på siden så skal den se sådan her ud:

$html = file_get_contents("http://www.eksperten.dk");
if (preg_match_all("/<h1>(.+?)</h1>/is", $html, $matches)
{
    foreach ($matches[1] as $match)
    {
        echo $match . "<br>";
    }
}
Avatar billede kastermester Nybegynder
07. august 2005 - 20:15 #4
nielle uden at være sikker, men hvis du nu har teksten

Hej med dig
<h1>Overskrift</h1>
Mere tekst
<h1>Mere overskrift</h1>
Lidt mere tekst

Vil dit eksempel så ikke give

Overskrift</h1>
Mere tekst
<h1>Mere overskrift

? Er ikke sikker, men det kunne jeg da forestille mig
Avatar billede Slettet bruger
07. august 2005 - 20:26 #5
Jeg får bare smidt en
Warning: Unknown modifier 'h' in /sti/til/server/fil.php on line 3
i hovedet når jeg prøver =(
Avatar billede nielle Nybegynder
07. august 2005 - 20:31 #6
kastermester> Ja det er jeg ret sikker på at den ikke burde gøre. Det lille spørgsmålstegn i (.+?) er grunden til at det går godt. :^)
Avatar billede nielle Nybegynder
07. august 2005 - 20:32 #7
Sådan:

Hvis der klan være mere end 1 <h1> på siden så skal den se sådan her ud:

$html = file_get_contents("http://www.eksperten.dk");
if (preg_match_all("/<h1>(.+?)<\/h1>/is", $html, $matches)
{
    foreach ($matches[1] as $match)
    {
        echo $match . "<br>";
    }
}

... nu med bedre escape i pattern!
Avatar billede nielle Nybegynder
07. august 2005 - 20:33 #8
... hvo lidt for meget cut'n'paste med der. :^|
Avatar billede Slettet bruger
07. august 2005 - 20:56 #9
Den til et enkelt <h1> giver:
Warning: Unknown modifier 'h' in /sti/til/server/fil.php on line 3
og udskriver Array

Den til flere <h1> giver følgende:
Parse error: parse error, unexpected '{' in /sti/til/server/fil.php on line 4
Avatar billede nielle Nybegynder
07. august 2005 - 20:59 #10
Den til en enkelt, mangler ogsåe en escape.

Den til flere, manglede en parentes:

$html = file_get_contents("http://www.eksperten.dk");
if (preg_match_all("/<h1>(.+?)<\/h1>/is", $html, $matches))
{
    foreach ($matches[1] as $match)
    {
        echo $match . "<br>";
    }
}
Avatar billede Slettet bruger
07. august 2005 - 21:02 #11
Så virker det =) Superb!

Ligger i begge et svar?
Avatar billede nielle Nybegynder
07. august 2005 - 21:05 #12
Så' gerne :^)
Avatar billede Slettet bruger
07. august 2005 - 21:59 #13
Javel :)
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