Problem beim suchen eines array aus Textdatei

Hallo Forum,

wie bereits in einem anderen Posting erwähnt, lese ich diverse aber bestimmte Zeilen aus einer Textdatei aus, indem ich die Zeilen in denen ein Bestimmter Text vorkommt auslese und Teile der Zeile in eine Variable schreibe.

Z.B. :

[PREHTML]

<?php $datei = file("meine-datei.txt");
$ar = array($datei); $meinString = "Ich bin die gesuchte Zeile"; for($i=0; $i{ if (ereg($meinString, $ar[$i])) { $meinWert=substr($ar[$i], -13); echo " MWST 19%" . $meinWert . ""; } } ?\> [/PREHTML] Problem: Nun kommt $meinString aber in zwei Zeilen in der Datei vor. Wie schaffe ich es, dass beim Aufruf der Variablen "$meinString" nicht beide Werte, sondern nur der Zweite Wert abgefangen wird? Ich möchte nämlich gerne beide Werte in je einer Variablen schreiben, sodass beide Werte in diesen Variablen in meine Datenbank in je einer Spalte geschrieben werden können. Geht das?? Und wenn ja....wie? Vielen Dank für jede Hilfe! Viele Grüße aus Wuppertal! |

Hallo Laurenzo,

probiers doch mal so in der Art hier:

[PREHTML]

<?php :blush:datei = file("meine-datei.txt");
$ar = array($datei); $meinString = "Ich bin die gesuchte Zeile"; for($i=0; $i{ if (ereg($meinString, $ar[$i])) {

if ($meinString==" ")

(

meinWert=substr($ar[$i], -13);
echo " MWST 19%" . $meinWert .
)
else
{
meinWert2=…
)

„“;
}
}
?>
[/PREHTML]

|

Hallo Laurenzo,

probiers doch mal so in der Art hier:

Hi Petra,

leider klappt das nicht so richtig.
Kann ich dem Array nicht sagen, er soll den zweiten gefundenen Wert nehmen?
Denn wenn ich meinen Wert nach der unten gezeigten Methode anzeigen lasse, dann zeigt er mir gleich beide im Array gefundene Werte an. Ich brauche aber nur den zweiten.

Gibt es dafür keine Funktion oder eine ähnliche Methode?

[PREHTML]

<?php ::blush:datei = file("meine-datei.txt");
$ar = array($datei); $meinString = "Ich bin die gesuchte Zeile"; for($i=0; $i{ if (ereg($meinString, $ar[$i])) {

if ($meinString==" ")

(

meinWert=substr($ar[$i], -13);
echo " MWST 19%" . $meinWert .
)
else
{
meinWert2=…
)

„“;
}
}
?>
[/PREHTML]

|

uff…
das war aber schwer zu verstehen…
bzw bin ich noch immer nicht sicher, was Du nun eigentlich tun willst…

achte bitte wenns geht auf eine schönere und lesbare formatierung des php codes mittels des [pre] tags (in klammern :wink:)

Also…
mein Lösungsansatz wäre, dass Du am einfach nachdem das erste $meinString das letztemal gebraucht wurde diese Variable einfach wieder freigibst…
unset($meinString);

löst das das Problem?

Grüße
Munich

Hallo,

Probier es mal so aus:

<?php $datei = file("meine-datei.txt");<br />$ar = array($datei);
$meinString = "Ich bin die gesuchte Zeile";

for($i=0; $i<count></count>{
 if (ereg($meinString, $ar[$i], $temp))
 {
 $meinWert=substr($temp[2], -13);
 echo " MWST 19%" . $meinWert . "";  
 }  
}  
?\>  
  
  
Wenn das nicht klappen sollte, oder das nicht das ist was du brauchst musst bitte genauer erklären was du überhaupt möchtest :smile:  
  
Gruß  
Phillip  
 |

Hi!
Jo, beim nächsten Mal werd ich darauf achten. :wink:
Ich habe nun das Problem auf andere Weise gelöst.

Da ich eine Schleife durchlaufe, habe ich einfach in der zweiten Schleife eine andere Variable als die in der Ersten Schleife genommen und durch eine If() Anweisung mit der ersten Variable verglichen.

Das funktioniert, zwar etwas umständlich aber funktioniert wunderbar :wink: .

Besten DAnk dennoch für deine Hilfe!

Viele Grüße

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Laurenzo,

Denn wenn ich meinen Wert nach der unten gezeigten Methode
anzeigen lasse, dann zeigt er mir gleich beide im Array
gefundene Werte an. Ich brauche aber nur den zweiten.

Gibt es dafür keine Funktion oder eine ähnliche Methode?

Du verwirrst mich…oben schriebst du noch:

Ich möchte nämlich gerne beide Werte in je einer Variablen schreiben, :sodass beide Werte in diesen Variablen in meine Datenbank in je einer :Spalte geschrieben werden können.

Für dein jetzt definiertes Problem würde ich etwas in der Art vorschlagen:

[PREHTML]

<?php :::blush:datei = file("meine-datei.txt");
$ar = array($datei); $meinString = "Ich bin die gesuchte Zeile";

$j=0;

for($i=0; $i{

if (ereg($meinString, $ar[$i]))

{
$j++;
)
if (ereg($meinString, $ar[$i])) AND ($j=2)
{
$meinString…
}
}

„“;
}
}
?>
[/PREHTML]

Gruss
Petra

Ich hab’s nun!

Vielen Dank für deine Hilfe! :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]