Avatar billede -kenner- Nybegynder
27. juni 2006 - 10:42 Der er 8 kommentarer og
1 løsning

søge efter en html kode på en anden side, og returnere resultat

Hej eksperter,

Jeg har brug for at tjekke om en kode indgår på andre websites, som jeg selv angiver URL'en på, men jeg er ikke sikker på hvordan det skal programmeres. jeg har før set en kode lignede, hvor der var brugt join() til at komme ind i websitets source, og så preg_match tror jeg, til at søge efter et stykke tekst i selve kildekoden.

Kenneth
Avatar billede gizmo-gizmo Nybegynder
27. juni 2006 - 11:57 #1
Problemet ligger i at få indholdet fra URL'en ned i en streng som du kan søge i. Det er ikke let hvis du selv skal kode det, men du kan bruge "snoopy" til det (bare en klassefil man inkludere). Download på: http://sourceforge.net/project/showfiles.php?group_id=2091

Scriptet kunne så komme til at se sådan her ud:

<?php
include("Snoopy.class.php");

$snop = new Snoopy();
$snop->fetch("http://www.google.dk"); //Fang indholdet af url'en
$content = $snop->results; //$content indeholder nu sovsen

//Søg i sovsen
$search = "<html>";
if (strpos($content, $search) !== false) {
  echo "Streng fundet";
} else {
  echo "Pis os";
}
?>

Koden ser bare om en given streng eksisterer i den html-kode url'en returnerer. Jeg ved ikke om det er en så simpel løsning du er ude efter?
Avatar billede -kenner- Nybegynder
27. juni 2006 - 15:29 #2
okay, jeg tror på at det du er kommet med vil virke, men den kode jeg fik af en anden programmør var meget mere simpel, kun 6-7 linier og det virkede perfekt.. Er du sikker på at der ikke findes en funktion der smider filen ind i en variable, jeg er ret sikker på at han brugte join().
Avatar billede gizmo-gizmo Nybegynder
27. juni 2006 - 15:41 #3
Det afhænger af om filen du forsøger at læse ligger under dit domæne. Jeg har forstået det sådan at det er en anden hjemmeside du ønsker at fange indholdet af (altså lave en http request og gemme svaret). Den eneste måde jeg kunne forestille mig brugen af join() på er ved f.eks.:
$content = join("", file("minfil.html"));
Men det virker jo kun på ens egne filer, og giver ikke ret meget mening egentlig.
Avatar billede -kenner- Nybegynder
27. juni 2006 - 19:50 #4
svaret skal ikke gemmes, der skal bare laves det check, og så skal der skrives en lille tekst med en echo, så jeg skal bare bruge et true/false svar, og ikke data eller noget der skal gemmes, så jeg kigger bare efter den letteste løsning, der kræver mindst databehandling.
Avatar billede gizmo-gizmo Nybegynder
27. juni 2006 - 19:57 #5
Når jeg skriver gemme, så mener jeg gemme i en variabel :)

Er det en fil på din server du vil søge i? eller er det en ekstren fil på en anden server?
Avatar billede -kenner- Nybegynder
28. juni 2006 - 20:07 #6
det er en ekstern fil.
Avatar billede gizmo-gizmo Nybegynder
28. juni 2006 - 23:16 #7
Okay, så skal du kigge på mit første eksempel. Der er ingen ultra let måde at snuppe indholdet fra en anden hjemmeside.
Avatar billede -kenner- Nybegynder
29. juni 2006 - 14:04 #8
Denne kode virker fint, hvis den server, som scriptet ligger på tillader at ud åbner eksterne filer med file. Men dit eksempel virker garantere også, så du får point for at tage dig tid til mig :)

<?php
$data = join("",file("http://www.side.dk"));

if (stristr($data, "Online")) {
$status = "Online";
} else{
$status =  Offline";
}
echo"Status: $status";
?>
Avatar billede gizmo-gizmo Nybegynder
29. juni 2006 - 14:17 #9
Yep, men det er jo kun en lille procentdel der tillader dette, så den løsning er ikke særlig optimal. Iøvrigt er det smartere at bruge:
$data = file_get_contents("http://www.side.dk");
i stedet for:
$data = join("",file("http://www.side.dk"));
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