Gå til innhold

problem med script (preg_match_all)


Anbefalte innlegg

Hei. Jeg har fått i oppgave å skrape en webside for informasjon. La oss si at denne hjemmesiden er slik at:

 

Vi har et navn på et produkt, så årstallet produktet er utgitt og en link til hjemmesiden til produsenten. Problemet er at alle produsentene ikke nødvendigvis har en hjemmeside.

 

Koden min ser slik ut:

 

	$search_for = "<SPAN CLASS\=\"product\"\>(.*)\<";
	preg_match_all("/$search_for/U", $site, $matches); 
	$array['product'] = $matches[1];

	$search_for = "<DIV CLASS\=\"year\">(.*)\<";
	preg_match_all("/$search_for/U", $site, $matches);
	$array['year'] = $matches[1];

	$search_for = "<BR><A HREF\=\"(.*)\" TARGET\=\"_blank\"\>";
	preg_match_all("/$search_for/U", $site, $matches);
	$array['link'] = $matches[1];

 

De to første preg matcene funker. Det som skjer er at dersom et produkt IKKE har en hjemmeside vil den neste hjemmesiden (altså til et annet produkt) legges inn sammen med produktet som ikke har en hjemmeside.

 

F.eks så ser siden slik ut:

 

product: Quaker

year: 1978

link: www.quaker.com

 

product: Nora

year: 1502

 

product: Weetabix

year: 1024

link: www.weetabix.com

 

Det som skjer er at www.weetabix.com legges inn for produktet Nora, mens Weetabix får ingen hjemmesiden assosiert ved seg.

 

Hvordan kan jeg løse dette problemet? Forslag?

Lenke til kommentar
Videoannonse
Annonse

ligger all denne dataen i samme dokument?

 

jeg ville nok skrevet om det regulære utrykket slik at den returnerer product, year, link i samme arrayen og ikke 3 forskjellige slik som du har gjort. på den måten beholder du assosiasjonen mellom dataen

 

da måtte du jo funnet et utrykk som hadde hentet alt i en go da..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...