3gx: Sowas wie Perl's grep() in PHP?...

Hallo,
also ich habe eine Datei (weiber.txt) mit z.B. folgendem Inhalt in einem Array, wobei jede Zeile halt ein Wert ist...:

Tina|Rosen|Blaubeeren|Kino|...
Marlene|Veilchen|Himbeereis|Fernsehen|...
Nadja|Rosen|Brathuhn|Faulenzen|...
Ramona|Gänseblümchen|Salat|Sport|...
Ingeborg|Wicken|Froschschenkel|Tiefseetauchen|...
...

So, jetzt möchte ich, dass z.B. nur die Zeile mit "Marlene" am Anfang ausgegeben wird. Also es soll immer nur der Anfang der Zeile bis zum ersten "|" durchsucht werden und zwar unter Beachtung von Groß- u. Kleinschreibung. Wie mach ich das jetzt? - Also sowas wie der Befehl "grep()" in Perl, gibts in PHP ja nicht, oder?
Hab zwar einiges mit so manchen Funktionen wie z.B. in_array(), ereg(), array_search() usw. ausprobiert, was aber zu nix prickelndem geführt hat...

Wieauchimmer, hab mir das beispielsweise so vorgestellt:

<?php
$Person = "Marlene";
$Daten = file("weiber.txt");

for($i=0;$i<count($Daten);$i++) {
  if(ZEILENANFANG == $Person) {      // << hier hapert's ...
    echo $Daten[$i] ."\n";
  }
  else {
    echo "$Person nicht gefunden.\n";
  }
}
?>

Wie geht das? Oder wie geht's anders - einfacher vielleicht?
Also ohne unbedingt alles einlesen zu müssen...
Und wie breche ich in diesem Beispiel die FOR-Schleife ab,
wenn $Person gefunden wurde?

~
Danke schonmal,
~3gx~

  1. Hi!

    Tina|Rosen|Blaubeeren|Kino|...
    Marlene|Veilchen|Himbeereis|Fernsehen|...
    Nadja|Rosen|Brathuhn|Faulenzen|...
    Ramona|Gänseblümchen|Salat|Sport|...
    Ingeborg|Wicken|Froschschenkel|Tiefseetauchen|...
    ...

    So, jetzt möchte ich, dass z.B. nur die Zeile mit "Marlene" am Anfang ausgegeben wird. Also es soll immer nur der Anfang der Zeile bis zum ersten "|" durchsucht werden und zwar unter Beachtung von Groß- u. Kleinschreibung. Wie mach ich das jetzt? - Also sowas wie der Befehl "grep()" in Perl, gibts in PHP ja nicht, oder?

    Ich kenne http://www.php.net/manual/de/function.preg-grep.php, aber weiß nicht ob es dasselbe ist.

    Hab zwar einiges mit so manchen Funktionen wie z.B. in_array(), ereg(), array_search() usw. ausprobiert, was aber zu nix prickelndem geführt hat...

    Wieauchimmer, hab mir das beispielsweise so vorgestellt:

    <?php
    $Person = "Marlene";
    $Daten = file("weiber.txt");

    for($i=0;$i<count($Daten);$i++) {
      if(ZEILENANFANG == $Person) {      // << hier hapert's ...

    Gibt viele Möglichkeiten, z.B.

    if(substr($Daten[$i],0,strpos($Daten[$i],"|")-1)=$Person)

    oder

    if(preg_match("/^$Person|/",$Daten[$i]))

    Hab das jetzt nicht getestet, aber das Prinzip sollte klar sein. Denke so könnte es gehen!

    Grüße
    Andreas

    1. Danke. Glaub, mir ist Art und Weise jetzt klar, war zu fest auf Perl und seine Funktionen fixiert - bin noch neu in PHP und muss gerade diverse Perl-Skripte nach PHP portieren.
      Aber Danke nochmal, schaut aus, als ob's so (od. so ähnlich)funktioniert.
      ---
      beste Grüße und 'n schönen Abend noch...