[PHP] einzelne zeilen auslesen

sunny2k

Ensign
Registriert
Okt. 2002
Beiträge
151
hi leute,

wie kann man mit PHP aus einer Textdatei oder html-Datei eine einzelne Zeile auslesen, in einer html-Datei steht in einer Zeile etwas was sich alle paar Minuten ändert, zB Zeile 162
Code:
<table><tr><td>hier steht was</td></tr></table>
...ich möchte jetzt also aus dieser besagten Zeile in meinem PHPscript auf einer anderen Seite dieses "hier steht was" anzeigen. mit arrays komme ich hier glaube ich net weit oder?

danke für Hilfe
sunny
 
Hallo,

ich lese eine IP aus einer Textdatei aus. Erste Zeile, die ersten 15 Zeichen.

Code:
         <?php
          $datei=@fopen("http://????????????????????????/ip.inc","r");
          if($datei)
          {
           echo("IP: ".fgets($datei,15));
           @fclose($datei);
          }
         ?>

Nach jedem Aufruf mit fgets rutscht der Zeiger eine Zeile weiter. Du könntest also eine kleine Schleife drumbasteln und fertig. Besser wäre, den Zeiger vorher mit fseek auf die gewünschte Position zu setzen. Übrigens entfernt fgtess (nicht fgets!) PHP- und HTML-Tags aus der Quellzeile.

Gruß, Gobble-G
 
PHP:
<?php

$url = 'https://www.computerbase.de/forum/index.php';


/*
 * Bei kleinen Dateien reicht das
 */

if($lines1 = file($url))
{
	//12 für zeile 13
	echo $lines1[12];
	
}


/*
 * ...bei größeren Dateien lieber diesen Algorithmus
 */
function file2 ($url, $size=4096)
{
	if($fp = fopen($url, 'rb'))
	{
		while(!feof($fp))
		{
			$buffer .= fgets($fp, $size);
		}
		
		fclose($fp);
		
		return explode("\n", $buffer);
	}
	else
	{
		return false;
	}
}

if($lines2 = file2($url))
{
	//12 für zeile 13
	echo $lines2[12];
	
}

?>

edit:

axo fast vergessen zu sagen, die zeilenumbrüche bleiben in dem array erhalten !!! das bedeutet, dass du die eventuell noch entfernen musst
 
Zuletzt bearbeitet:
wieso so kompliziert ?

ich würd das so machen:
PHP:
<?
#1
$file=file("datei.php");
#2
$file[xxx]=str_replace("<table><tr><td>","",$file[xxx]); 
$file[xxx]=str_replace("</td></tr></table>","",$file[xxx]); 
#3
echo $file[xxx];
?>

#1:
dadurch wird ein array ($file) erstellt.
nun kannst du die einzelnen zeilen mit echo $file[161] ausgeben.
allerdings musst du beachten das zeile 1 $file[0] ist, daher ist dann zum beispiel zeile 162 eben $file[161].

#2:
hiermit entfernst du die tabelle

#3
Damit gibst du den text dnan aus



Edit: Wie habt ihr es geschafft den code farbig anzuzeigen ?
 
Zuletzt bearbeitet:
Original erstellt von WhiteShark
wieso so kompliziert ? ....


hmm ich kann da jetzt keinen unterschied zu dem was ich gepostet hab erkennen. nur würde ich file wirklich nur bei kleinen dateien benutzten weil der befehl bei größeren einfach zu langsam ist. und 2. algorithmus macht ja wirklich nichts anderes als file nur eben schneller.

nachtrag:

noch schnell ein paar messergebnisse (nicht wirklich genau aber zur veranschaulichung reichts) für 50 abfragen jeweils:

file : 78.875187993
file2: 57.2685710192

bei einer kleinen-mittleren datei (~50kb), es wäre also wirklich nicht sehr schlau die file-function von php zu nutzen
 
Zuletzt bearbeitet:
oh, des hab ich übersehen durch die if abfragen.

aber gut wenn die andere möglichkeit schneller ist dann sollte man auf jedenfall diese nehmen.


nur wie ändert man die farben bei der code-anzeige ?
 
@ WhiteShark

setz den Code einfach in die ["PHP"]...["/PHP"] tag´s...

dann natürlich ohne die ""
 
danke :)

hi leute,

wollte mich grad mal bedanken, schnelle Hilfe von euch, und klappt wunderbar für meinen Zweck. :) Sehr schön was man mit PHP alles machen kann

so long, sunny
 
Zurück
Oben