spezielles Auslesen von Daten aus einer Textdatei

webdesign

Mitglied
Hallo zusammen
Ich habe ein Problem, weiss aber nicht wie lösen. Ich habe nichts im Forum gefunden und sonst schon viel ausprobiert.
Ich habe eine Textdatei mit Einträgen von Konzertdaten. Es gibt neue Konzertdaten und alte. Die Einträge sehen etwa so aus.

konzertdaten|-|alt|-|
konzertdaten|-|neu|-|
konzertdaten|-|alt|-|
konzertdaten|-|alt|-|
konzertdaten|-|neu|-|

Ich möchte nur 2 Einträge auslesen, die neu sind. Da die Einträge durcheinander sind, kann ich nicht einfach sagen, dass es die ersten 2 Zeilen auslesen soll. Ist das irgendwie möglich?

Gruss Jonas
 
Hallo,

da gibt es, wie so oft, mehrere Varianten.

Variante Nummer 1 wäre die Datei Zeile für Zeile auszulesen und zu gucken ob "neu" drin vorkommt. Vielleicht wäre die Zeile dann auch noch mit Explode zu bearbeiten.

Variante Nummer 2 wäre die Datei komplett einzulesen und dann eine regulären Ausdruck drüber zu jagen, der einem die Zeilen ausgibt in denen "neu" drin vorkommt und diese dann weiterverarbeiten

so, das sind spontan die ersten beiden Anfälle, denke das genügt als Ansatz :-)
 
Hi,
das könntest du in etwa so lösen:

PHP:
$inhalt = file("datei.txt");
for($y=0;$y<count($inhalt);$y++) {
$zeile = $inhalt[$y];
$ez = explode("|-|",$zeile);

if($ez[1] == "neu") {
echo $ez[0];
} else {
}

}

schiese
 
Hallo Zusammen
Ihr habt mich falsch verstanden. Es geht mir nicht darum, wie ich die Einträge in neu/alt sortieren kann, das ist kein Problem, sondern wie ich von den neuen Einträgen, wenn ich alle Einträge in neu und alt sortiert habe, nur 2 Einträge davon anzeigen kann. Das Problem ist, dass ich nicht einfach bei der for-schleife
for($i = 0; $i < $anzahl; $i++) anstatt die Variable $anzahl eine 1 oder 2 hinschreiben kann, da ja alle Einträge durcheinander sind. Dadurch würden z.T. auch alte Konzerte angezeigt werden.
Wie könnte ich das machen?
Gruss Jonas
 
Hi,
Habs jetzt nicht geprüft, aber ich denke, so sollte es gehen!

PHP:
$inhalt = file("datei.txt");
$array = array();
for($y=0;$y<count($inhalt);$y++) {
$zeile = $inhalt[$y];
$ez = explode("|-|",$zeile);

if($ez[1] == "neu") {
array_push($array,$y);
} else {
}
} 

for($y=0;$y<2;$y++) {
$id = $array[$y];
$zeile = $inhalt[$id];
$ez = explode("|-|",$zeile);
echo $ez[0];
}


schiese
 
Also, bei mir funktioniert das Skript. Du musst auch den Namen deiner Textdatei oben eintragen.
Zeig doch mal deine Versuche und die Textdatei.
schiese
 
Mein Versuch sieht so aus. Die Textdatei stimmt.
PHP:
	$inhalt = file($datei2,"r");
	$array=array(); 
	for($y=0;$y<count($inhalt);$y++){ 
	$zeile=$inhalt[$y]; 
	$ez=explode("|-|",$zeile); 
	$show_eintrag = $ez[0];
	$live = $ez[1];

	if($live=="Neu"){ 
	array_push($array,$y); 
	}
	else
	{ 
	} 
	} 

	for($y=0;$y<2;$y++){ 
	$id=$array[$y]; 
	$zeile=$inhalt[$id]; 
	$ez=explode("|-|",$zeile);
	$show_eintrag = $ez[0];
	$live = $ez[1]; 
	
	$show_eintrag = ereg_replace("<br />","<br>",$show_eintrag);
	$show_eintrag = str_replace("[ b ]","<b>",$show_eintrag);
	$show_eintrag = str_replace("[ /b ]","</b>",$show_eintrag);
	$show_eintrag = str_replace("[ i ]","<i>",$show_eintrag);
	$show_eintrag = str_replace("[ /i ]","</i>",$show_eintrag);
	$show_eintrag = str_replace("[_]","<u>",$show_eintrag);
	$show_eintrag = str_replace("[/_]","</u>",$show_eintrag);
	$show_eintrag = str_replace("[+]","<span id='plus'>",$show_eintrag);
	$show_eintrag = str_replace("[/+]","</span>",$show_eintrag);
	$show_eintrag = str_replace("[-]","<span id='minus'>",$show_eintrag);
	$show_eintrag = str_replace("[/-]","</span>",$show_eintrag);
	$show_eintrag = str_replace("[ P ]","&nbsp;",$show_eintrag);
	$show_eintrag = str_replace("[anfz]","&quot;",$show_eintrag);
	$show_eintrag = str_replace("[/anfz]","&quot;",$show_eintrag);
	$show_eintrag = str_replace("[apostr]","'",$show_eintrag);
	$show_eintrag = str_replace("[link:","<a href=\"",$show_eintrag);
	$show_eintrag = str_replace("[/link]","</a>",$show_eintrag);
	$show_eintrag = str_replace("[mail:","<a href=\"mailto:",$show_eintrag);
	$show_eintrag = str_replace("[/mail]","</a>",$show_eintrag);
	$show_eintrag = str_replace("[bild]","<img src=\"$url/bilder/",$show_eintrag);
	$show_eintrag = str_replace("[/bild]","\" width=\"220\" border=\"0\">",$show_eintrag);
	$show_eintrag = str_replace("//]","\" target=\"_blank\">",$show_eintrag);
	$show_eintrag = str_replace("/]","\">",$show_eintrag);
	$show_eintrag = str_replace("\\","",$show_eintrag);
	
	echo "<tr>
	<td align='left' valign='top' style='border-bottom:1px #000 dashed'>
	<br>
	<br>$show_eintrag<br><br>
	</td>
	</tr>\n";
	}
 
Zurück