Avatar billede dugi Nybegynder
25. september 2005 - 12:58 Der er 9 kommentarer og
1 løsning

Problem med preg_match_all - IGEN!

Hejsa,

Nu er jeg tilbage med et problem igen og som sidst, giver det ingen mening (i min verden)
Måske der bare skal nogle nye øjne til evt. at se en fejl jeg ikke kan se - en der gider kigge på det?

Når jeg henter en url og laver file_get_contents på den virker det ikke, men hvis jeg klipper den kode ud jeg vil fange, og lægger den i en string for sig selv, så virker den.

Lidt forklaring med kode ...


Denne metode virker:
$cnt = '<div><span>Søndag</span><a href="/danmark/ugeprognose/"><img src="/img/ikoner/letregnsky.png" alt="Letskyet" title="Letskyet" border="0" height="80" width="60"></a><div class="dagtemp">20°</div><div class="nattemp">10°</div><div class="vind"><img src="/img/vindpil/s.gif" alt="Vind retning" title="Syd" align="top" border="0" height="15" width="15">7 m/s</div></div>';

preg_match_all("/<div id=\"femdoegn\"><div><span>Søndag<\/span><a href=\"\/danmark\/ugeprognose\/\"><img src=\"\/img\/ikoner\/letregnsky.png\" alt=\"Letskyet\" title=\"(.*?)\" border=\"0\" height=\"80\" width=\"60\"><\/a><div class=\"dagtemp\">(.*?)<\/div><div class=\"nattemp\">(.*?)<\/div><div class=\"vind\"><img src=\"\/img\/vindpil\/s.gif\" alt=\"Vind retning\" title=\"(.*?)\" align=\"top\" border=\"0\" height=\"15\" width=\"15\">(.*?)<\/div><\/div>/s", $cnt, $out, PREG_SET_ORDER);

print_r($out);


-------------------------------------------
Men denne metode som jeg vil bruge, virker ikke - Hvorfor?

$cnt = file_get_contents($url);

preg_match_all("/<div id=\"femdoegn\"><div><span>Søndag<\/span><a href=\"\/danmark\/ugeprognose\/\"><img src=\"\/img\/ikoner\/letregnsky.png\" alt=\"Letskyet\" title=\"(.*?)\" border=\"0\" height=\"80\" width=\"60\"><\/a><div class=\"dagtemp\">(.*?)<\/div><div class=\"nattemp\">(.*?)<\/div><div class=\"vind\"><img src=\"\/img\/vindpil\/s.gif\" alt=\"Vind retning\" title=\"(.*?)\" align=\"top\" border=\"0\" height=\"15\" width=\"15\">(.*?)<\/div><\/div>/s", $cnt, $out, PREG_SET_ORDER);

print_r($out);




Håber der er nogen som kan se min fejl, eller give en forklaring :)
På forhånd tak!


Med venlig hilsen
Morten
Avatar billede dugi Nybegynder
25. september 2005 - 13:00 #1
Rettelse til begge preg_match_all:

preg_match_all("/<div><span>Søndag<\/span><a href=\"\/danmark\/ugeprognose\/\"><img src=\"\/img\/ikoner\/letregnsky.png\" alt=\"Letskyet\" title=\"(.*?)\" border=\"0\" height=\"80\" width=\"60\"><\/a><div class=\"dagtemp\">(.*?)<\/div><div class=\"nattemp\">(.*?)<\/div><div class=\"vind\"><img src=\"\/img\/vindpil\/s.gif\" alt=\"Vind retning\" title=\"(.*?)\" align=\"top\" border=\"0\" height=\"15\" width=\"15\">(.*?)<\/div><\/div>/s", $cnt, $out, PREG_SET_ORDER);

--------------------
Der skal ikke være <div id=\"fremdoegn\"> med, det som er fjernet :)
Avatar billede jakobdo Ekspert
25. september 2005 - 13:04 #2
Det ligner en som vil fetche vejret fra TV2 :o)

Prøv at ret videre i denne:

$content = file_get_contents("http://vejret.tv2.dk/");

if (preg_match('/<div id="femdoegn">.+?<\/div><\/div><\/div>/s', $content, $match))
{
  $content = $match[0];
  if(preg_match_all('/<div><span>(\\w+)<\/span>.+?<img src="\/img\/ikoner\/([a-z\\-_.]+)?".+?alt="([\\w\\s]+)" title="([\\w\\s]+)".+?dagtemp">(\\d+).+?nattemp">(\\d+).+?vind"><img src="\/img\/vindpil\/([a-z_.]+)?".+?alt="([\\w\\s]+)" title="(\\w+)" \/>(\\d+)\\sm\/s<\/div><\/div>/si', $content, $matches))
{
echo "<pre>";
print_r($matches);
echo "</pre>";
}
}
Avatar billede dugi Nybegynder
25. september 2005 - 13:30 #3
Jeps, et skole projekt :)
Avatar billede dugi Nybegynder
25. september 2005 - 13:31 #4
Det må jeg sgu nok sige.
Din kode virker, men kunne du evt. forklarer hvad du har gjort i forhold til min?
Vil super gerne blive bedre til preg_match(_all) :)

Smid et svar btw :D
Avatar billede jakobdo Ekspert
25. september 2005 - 13:36 #5
Jeg har ikke gjort noget i forhold til din! (min lillebror skulle bruge noget kode som kunne vise vejr-udsigten, så havde den færdige kode)

Men for at blive god (eller have lettere ved at bruge regexp) så synes jeg du skal hente Regexbuddy
Med det program kan du indtaste test data, f.eks.
<div class="test">Hej Mor</div>
Og når du så begynder at skrive din regexp: <div
Så highligtes det test som matcher.
Avatar billede jakobdo Ekspert
25. september 2005 - 13:36 #6
$var = true;
Avatar billede dugi Nybegynder
25. september 2005 - 13:54 #7
Tusind tak!
Hvor kan jeg hente det henne? :)
Avatar billede dugi Nybegynder
25. september 2005 - 13:54 #8
Tusind tak!
Hvor kan jeg hente det henne? :)
Avatar billede jakobdo Ekspert
25. september 2005 - 13:58 #9
http://www.regexbuddy.com/ Det er dog ikke gratis!
Avatar billede grace45 Nybegynder
22. oktober 2010 - 19:41 #10
Hej min kære,
Hvordan har du i dag, jeg håber, at alle er godt med dig. Jeg er ked af at bekymre dig med min Forslag til et forhold med dig, men jeg ved, at du vil imødekomme min anmodning i god tro og forståelse. Jeg har brug for dig i forretningsbetingelser og rådgive. Mit navn er Grace Dabah jeg bare gik gennem din profil har ingen andre muligheder end at lade dig vide, at jeg er interesseret i at have et forhold med dig, vil jeg også gerne vide dig mere, kan du sende en mail til min e-mail adresse (grace_11dabah @ yahoo.com), så jeg kan sende dig flere oplysninger om mig selv inklusive mit billede. Jeg tror, vi kan gå herfra. Men huske på, at kærlighed ikke har nogen farver barriere, ingen uddannelsesmæssige tilbage jorden barriere, ingen socio-økonomiske barrierer, religiøse, sprog, nationalitet eller afstand hindring, det eneste vigtige der er kærlighed. Jeg venter på din mail til min e-mail adresse ovenfor.
Med venlig hilsen,
Miss Grace.
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