---
title: "Fopen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/93895-fopen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "esra"
published: "2004-01-03T13:42:21.000Z"
updated: "2004-01-03T15:22:01.000Z"
replies: 2
views: 258
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/93895-fopen"
---

# Fopen

## #1 — esra, 2004-01-03T13:42Z

Hej!

Sitter och försöker lära mig hur detta med fopen fungerar. Är helt grön på detta :OO 
Jag vill läsa in en fil från en webbsida och så långt är allting väl, men jag vill inte ha all kod från filen utan först ifrån en kodrad där det står \<!--BEGIN_OLD_LINKS--\> och 100 kodrader framåt i filen. Går det att begränsa inläsningen på detta sätt?
Just nu lyder min kod...

```php
<?php 

$url = 'http://www.websidan.com/filen.shtml'; 

$content = ''; 
if ($fp = @fopen($url, "r")) { 
   while (!feof ($fp)) { 
      $content .= fgets($fp, 1);
	  
   } 
   fclose($fp); 
} else { 
   echo "Gick inte att hämta från $url"; 
} 

?>
```

 
Just där har jag alltså hela sidans innehåll i variabeln $content

Tacksam för hjälp

mvh / esra

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

## #2 — Matte, 2004-01-03T15:10Z

Först. Att läsa en byte i taget är lite segt. Öka på siffran lite, t.ex

```php
$content .= fgets($fp, 1024);
```

 

Du vet hur koden ser ut där den börjar. Hur ser den ut efter dina 100 rader ?
För att ta fram sidans innehåll efter \<!--BEGIN_OLD_LINKS--\>

```php
preg_match("/<!--BEGIN_OLD_LINKS-->(.*)/si", $content, $match);
```

 
Nu finns detta innehåll i variabeln $match\[1\].

Nu skulle man ha kunnat dela upp denna kod i en array, behållit 100 rader samt slått ihop arrayen till sträng igen.
Men enklare hade det varit om du vetat hur koden såg ut efter de hundra raderna.
Då hade du gjort så här för att begränsa hur långt du ska hämta

```php
preg_match("/<!--BEGIN_OLD_LINKS-->(.*?)kod_efter/si", $content, $match);
```

 

Alternativt kunde du fixat något redan när du läste filen:

```php
$url = 'http://www.websidan.com/filen.shtml'; 

$content = ''; 
$i = 0;
if ($fp = @fopen($url, "r")) { 
   while (!feof ($fp)) { 
      $line = fgets($fp, 1);
      if (false !== stristr('<!--BEGIN_OLD_LINKS--> ') || $i > 0) {
         $content .= $line;
         // Eventuellt, då jag inte minns om fgets tar med radslutsmärke eller ej
         // $content .= $line."\n";
         $i++;
      } 
      
      if ($i == 100) {
         break;
      }
      
   } 
   fclose($fp); 
} else { 
   echo "Gick inte att hämta från $url"; 
} 

?>
```

PS
fopen-delen hade du redan fixat i och med att du fick hem ditt värde till $content :)
Vad frågan handlade om var hur du kunde ta ut en viss del av innehållet du hämtade.

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

## #3 — esra, 2004-01-03T15:22Z

Klockrent!
Dessutom är det så att de hundra raderna slutar med kodraden
\<!--END_OLD_LINKS--\> när jag kollade lite nogare (ganska logiskt...). 

Tack Matte!  :birp

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

---

Tråden på webben: https://www.webforum.nu/amne/php/93895-fopen
