---
title: "Vad gör jag fel???"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/88510-vad-gör-jag-fel"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Fredde Mannen"
published: "2003-10-14T21:13:46.000Z"
updated: "2003-10-15T09:58:57.000Z"
replies: 10
views: 537
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/88510-vad-gör-jag-fel"
---

# Vad gör jag fel???

## #1 — Fredde Mannen, 2003-10-14T21:13Z

Jag har denna kod: 

```php
<?php

$fd = fopen("http://www.linux.se/index.php","r");

if(!$fd) {
echo "Kan inte upprätta en anslutning!";
exit;
}

$line="";
$ret="";

while (!feof($fd))
  {
		 $line = fgets($fd, 1024);
		if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\">(.*)</A>",$line,$out)) 
			{
			$ret.="<a href=\"/news/readnews.php?ID=$out[1]&CLICK=$out[2]\">$out[3]</a><br>";
			} else {
				$ret = "no matches";
			}
  }

fclose($fd);
echo $ret;
?>
```

den skall hämta nyhetslänkarna från www.linux.se, men sidan blir blank... var är mitt fel... någonstans i regexpen br det vara, men jag hittar dt inte!!! HELP!!!

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

## #2 — sabbacus, 2003-10-14T21:37Z

Du gör många fel. Ett av dom är i den här raden

$ret = "no matches";

Så fort det kommer en rad som inte uppfyller din regexp så nollställs din $ret-variabel till värdet "no matches".

Även om du får in en massa "rätta" svar från din regexp nollställs din $ret-variabel om det inte finns ett "rätt svar" på sista raden.

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

## #3 — Fredde Mannen, 2003-10-14T21:42Z

> **sabbacus skrev:**
>
> Du gör många fel. Ett av dom är i den här raden
> 
> $ret = "no matches";
> 
> Så fort det kommer en rad som inte uppfyller din regexp så nollställs din $ret-variabel till värdet "no matches".
> 
> Även om du får in en massa "rätta" svar från din regexp nollställs din $ret-variabel om det inte finns ett "rätt svar" på sista raden.

```php
<?php

$fd = fopen("http://www.linux.se/index.php","r");

if(!$fd) {
echo "Kan inte upprätta en anslutning!";
exit;
}

$line="";
$ret="";

while (!feof($fd))
  {
         $line = fgets($fd, 1024);
        if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\">(.*)</A>",$line,$out)) 
            {
            $ret.="<a href=\"/news/readnews.php?ID=$out[1]&CLICK=$out[2]\">$out[3]</a><br>";
            } 
  }

fclose($fd);
echo $ret;
?>
```

okay.. har plockat bort den.. men det blir inget förrändrat resultat, mer än att nu visas inget "no matches".. 

Kan du hjälpa mig lite på traven TACK!!!  :q

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

## #4 — sabbacus, 2003-10-14T22:13Z

Jag har suttit och svurit i en halvtimma nu och kommit en del på vägen. Koden nedan fungerar delvis, men eregi() fungerar bara till en viss del. Förstår inte varför. Någon som kan förklara varför man inte kan skriva text efter ? i eregi-uttrycket?

```php
<?

$fd = fopen( "http://www.linux.se/index.php", "r" );

if ( !$fd )
{

	echo "Kan inte upprätta en anslutning!";

	exit();

}

$line = "";

$ret = "";

$count = 0;

while ( !feof( $fd ) )
{

	$line = fgets( $fd, 1024 );

	// Din ursprungliga eregi()
	//if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\">(.*)</A>",$line,$out)) 
	

	// Den här funkar för mig, får 29 träffar
	if ( eregi( "<a href=\"/news/readnews.php?", $line, $out ) )
	
	/* När jag lägger till ett I (stort som litet) får skriptet helt plötsligt noll träffar, trots att bokstaven finns där efter en titt i källkoden */
	//if ( eregi( "<a href=\"/news/readnews.php?I", $line, $out ) )
    {

//en smaksak egentligen. Jag separerar variablerna från strängen så att jag ser vart dom är. Skrev också 'id' och 'click' med gemener.
		$tmp = "<a href=\"/news/readnews.php?id=" . $out[1] . "&amp;click= " . $out[2] . "\">" . $out[3] . "</a>\n<br>\n";

		/* debug */
		//echo $line . "<br />";
		//echo $tmp;
		//echo "<br />";
		/* debug */

		$ret .= $tmp;

		$count++;
	}

}

if ( sizeof( $ret ) == 0 )
{
	$ret = "no matches";
}
else 
{
	echo $count . " matches.";
}

fclose( $fd );

echo $ret;

?>
```

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

## #5 — Nexus86, 2003-10-14T22:14Z

```php
<?php

$fd = fopen("http://www.linux.se/index.php","r");

if(!$fd) {
echo "Kan inte upprätta en anslutning!";
exit;
}

$line="";
$ret="";

while (!feof($fd))
  {
         $line = fgets($fd, 1024);
        if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\">(.*)</A>",$line,$out)) 
            {
            $ret.="<a href=\"/news/readnews.php?ID=$out[1]&CLICK=$out[2]\">$out[3]</a><br>";
            } else {
                if (empty($ret))
                    $ret = "no matches";
            }
  }

fclose($fd);
echo $ret;
?>
```

Har dock inte testat men det bör fungera.

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

## #6 — sabbacus, 2003-10-14T22:21Z

Nexus: Får "no matches" med din kod, bara så att du vet :)

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

## #7 — Nexus86, 2003-10-14T22:28Z

Nej men det är ju fel i uttrycket. På <http://www.linux.se/> står det en massa efter href i länkarna. :)

Byt ut:

```php
if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\">(.*)</A>",$line,$out))

// mot

if(eregi("<A HREF=\"/news/readnews.php?ID=(.*)&CLICK=(.*)\"(.*)>(.*)</A>",$line,$out))
```

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

## #8 — Nexus86, 2003-10-14T22:32Z

R// Det ville inte heller funka. Försöker komma på en annan lösning. :r

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

## #9 — Fredde Mannen, 2003-10-14T22:53Z

> **Nexus86 skrev:**
>
> R// Det ville inte heller funka. Försöker komma på en annan lösning. :r

Ingen fara, jag fixedixade med liten ändring i sabbacus kod..

```php
<?

$fd = fopen( "http://www.linux.se/index.php", "r" );

if ( !$fd )
{

    echo "Kan inte upprätta en anslutning!";

    exit();

}

$line = "";

$ret = "";

$count = 0;

while ( !feof( $fd ) )
{

    $line = fgets( $fd, 1024 );

    //Min ursprungliga eregi() ändrade jag till detta och får träffar..

    if(eregi("<A HREF=\"/news/readnews.php(.*)\">(.*)</A>\n",$line,$out)) 
    

    // Den här funkar för mig, får 29 träffar
    //if ( eregi( "<a href=\"/news/readnews.php?", $line, $out ) )
    
    /* När jag lägger till ett I (stort som litet) får skriptet helt plötsligt noll träffar, trots att bokstaven finns där efter en titt i källkoden */
    //if ( eregi( "<a href=\"/news/readnews.php?I", $line, $out ) )
    {

//en smaksak egentligen. Jag separerar variablerna från strängen så att jag ser vart dom är. Skrev också 'id' och 'click' med gemener.
        $tmp = "<a href=\"http://www.linux.se/news/readnews.php" . $out[1] . "\">" . $out[2] . "</a>\n<br>\n";

        /* debug */
        //echo $line . "<br />";
        //echo $tmp;
        //echo "<br />";
        /* debug */

        $ret .= $tmp;

        $count++;
    }

}

if ( sizeof( $ret ) == 0 )
{
    $ret = "no matches";
}
else 
{
    echo $count . " matches.";
}

fclose( $fd );
echo $ret;
?>
```

Script in action: <http://www.mkd.nu/news.php>

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

## #10 — Nexus86, 2003-10-14T23:06Z

Och det när jag just fått till det med din kod. :o :)

```php
<?php

$fd = fopen("http://www.linux.se/index.php","r");

if(!$fd) {
echo "Kan inte upprätta en anslutning!";
exit;
}

$line="";
$ret="";

while (!feof($fd))
{
	$line .= fgets($fd, 1024);
}

fclose($fd);

if (preg_match_all("/<A HREF=\"\/news\/readnews\.php\?ID=(.*?)&CLICK=(.*?)\" TARGET=\"_blank\" TITLE=\"(.*?)\">(.*?)<\/A>/i", $line, $out, PREG_SET_ORDER))
{
	for ($i = 0; $i < count($out) ; $i++)
	{
		$ret.="<a href=\"/news/readnews.php?ID={$out[$i][1]}&CLICK={$out[$i][2]}\">" . str_replace("<BR>", "", $out[$i][4]) . "</a><br>";
	}
}
else
{
    $ret = "no matches";
}

echo $ret;
?>
```

R// Fast HAHA! Min ger adresser utan radbrytningar. :e

R2// Valde att spara hela filen i $line istället för bara 1024 tecken för annars kan det hända att man bryter mitt i en länk och då kommer inte den med.

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

## #11 — Fredde Mannen, 2003-10-15T09:58Z

Nåja.. men det löste sig ialla fall.... :) Skadar aldrig med att det finns två varianter! :) en men eregi och en med preg_match! :e

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

---

Tråden på webben: https://www.webforum.nu/amne/php/88510-vad-gör-jag-fel
