---
title: "Varför fungerar inte detta scriptet att hämta info från sida?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16545-varför-fungerar-inte-detta-scriptet-att-hämta-info-från-sida"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mikaeled"
published: "2002-01-07T16:12:00.000Z"
updated: "2002-01-07T19:06:00.000Z"
replies: 7
views: 274
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/16545-varför-fungerar-inte-detta-scriptet-att-hämta-info-från-sida"
---

# Varför fungerar inte detta scriptet att hämta info från sida?

## #1 — mikaeled, 2002-01-07T16:12Z

```
<?
echo "hej";

$stock = fopen("http://www.searchfeed.com/rd/SearchResults.jsp?SearchString=internet", "r");
if (!$stock) { 
echo "<p>Får ingen kontakt med sidan.\n"; 
exit; }
$i = 0;
$max = 10;
$retur ="";
while (!feof($stock)) {
$line = fgets($stock, 1024);
$i++;
if (eregi(" <a href='/rd/AdvertiserInfo.jsp'>(.*)</a>", $line, $out) or die(hej)); {

}
if ($i==$max) { break; }
}
fclose($stock);
echo "$out[1]<br>";
?>
```

Varför fungerar inte detta?

\[Redigerat av mikaeled den 07 jan 2002\]

Permalänk: https://www.webforum.nu/p/16545

## #2 — sgtpepper, 2002-01-07T17:11Z

Av en hel del anledningar:

1\. Du läser bara in de 10 första raderna, vilka är helt tomma. Själva HTML-koden startar först på rad 15 och den första länken som skulle kunna matcha ditt reg-uttryck finns på rad 300.

2\. Om ditt reguljära uttryck inte uppfylls vid kontroll av den första inlästa raden så kommer scriptet att avbryta med die().

3\. Ditt reguljära uttryck är något felaktigt.

Så här skulle du kunna göra:

```
<?
	$stock = fopen("http://www.searchfeed.com/rd/SearchResults.jsp?SearchString=internet", "r");
	if (!$stock) { 
		die("Får ingen kontakt med sidan.\n"); 
	}

	$i = 0;
	$max = 350;
	$result = "inget data funnet";

	while (!feof($stock)  &#0124;&#0124; $i == $max) {
		$line = fgets($stock, 1024);
		$i++;
		if (eregi(".*<a href='/rd/AdvertiserInfo.jsp'>(.*)</a>", $line, $out)) {
			$result = $out[1];
			break;
		}
	}

	fclose($stock);
	
	echo "$result<br>";

?>
```

\> Läs in nya rader tills dess att slutet nåtts eller det att maxgränsen uppnåtts.

\> Om en rad matchar det reguljära uttrycket, lägg till det utplockade värde i $result och avbryt loopen, annars fortsätta läsa rader.

\> Skriv ut $result. Om inget data hittats så kommer $result att innehålla standardvärdet "inget data funnet", annars innehåller den det utplockade värdet.

Permalänk: https://www.webforum.nu/p/325713

## #3 — mikaeled, 2002-01-07T17:19Z

det funkar fint. tack

men hur gör jag om jag vill skriva ut andra? $out\[2\] funkar ej

Permalänk: https://www.webforum.nu/p/325714

## #4 — sgtpepper, 2002-01-07T17:27Z

Jag trodde att du bara ville ha den första träffen, eftersom du byggt ditt script på så sätt.

Vill du skriva ut alla träffar så får du modifiera det. Istället för att avbryta loopen vid match så skriver du ut träffen och fortsätter:

```
if (eregi(".*<a href='/rd/AdvertiserInfo.jsp'>(.*)</a>", $line, $out)) {
echo $out[1]."<br>";
}
```

Permalänk: https://www.webforum.nu/p/325715

## #5 — mikaeled, 2002-01-07T17:45Z

jag var tyvärr lite otydligt. 

jag vill att $out\[1\] ska innehålla första och osv

$out\[2\] ska innehålla andra resultaten. osv

Permalänk: https://www.webforum.nu/p/325716

## #6 — sgtpepper, 2002-01-07T18:51Z

Ok, gör så här istället:

```
if (eregi(".*<a href='/rd/AdvertiserInfo.jsp'>(.*)</a>", $line, $out)) {
$result[] = $out[1];
}
```

Resultatet kommer hamna i $result\[0\], $result\[1\] osv.

Permalänk: https://www.webforum.nu/p/325717

## #7 — mikaeled, 2002-01-07T18:56Z

Fick detta felet: 

Fatal error: \[\] operator not supported for strings in /home1/smozle/public_html/system.php on line 13

```
<?
$stock = fopen("http://www.searchfeed.com/rd/SearchResults.jsp?SearchString=gambling", "r");
if (!$stock) { 
die("Får ingen kontakt med sidan.\n"); 
}
$i = 0;
$max = 350000;
$result = "inget data funnet";
while (!feof($stock)) {
$line = fgets($stock, 1024);
$i++;
if (eregi(".*<a href='/rd/AdvertiserInfo.jsp'>(.*)</a>", $line, $out)) {
$result[] = $out[1];
}
}

fclose($stock);

echo "$result[0]<br>$result[1]<br>$result[2]";

?>
```

Rad 13:

if (eregi(".\*\<a href='/rd/AdvertiserInfo.jsp'\>(.\*)\</a\>", $line, $out)) {

Permalänk: https://www.webforum.nu/p/325718

## #8 — 2bas, 2002-01-07T19:06Z

Tyvärr har du råkat få $result att vara både en sträng och en array.
Byt ut $result="inget data funnet" till $result\[\]="inget data funnet" ,

/r nu kanske tom jag fattar vad jag skrev

Permalänk: https://www.webforum.nu/p/325719

---

Tråden på webben: https://www.webforum.nu/amne/php/16545-varför-fungerar-inte-detta-scriptet-att-hämta-info-från-sida
