Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Zeilen in einem Array lokalisieren und löschen (https://www.delphipraxis.net/69266-%5Bphp%5D-zeilen-einem-array-lokalisieren-und-loeschen.html)

Balu der Bär 12. Mai 2006 16:02


[PHP] Zeilen in einem Array lokalisieren und löschen
 
Moin,

wiedermal eine PHP-Frage:

Mit folgendem Code lese ich eine Datei ein:
Code:
 $zeilen = file('xxx.txt');
foreach ($zeilen as $zeile) { echo nl2br(htmlspecialchars($zeile)); }
Jetzt liegen mir die einzelnen Dateien ja in einem Array vor. Die Datei ist immer so aufgebaut:
Zitat:

Name: xxx
Zeit: xxx
Wohnort: xxx
Blabla: xxxx

Name: xxx
Zeit: xxx
Wohnort: xxx
Blabla: xxxx
Jetzt möchte ich die Datei aber gerne in Kurzform ausgeben, d.h. nur Name: xxx und Zeit: xxx sollen ausgegeben werden. Mein erster (unüberlegter) Versuch war ganz einfach mit str_replace und dann Name: oder Zeit:, leider jedoch weiß ich ja die Werte die dahinter stehen nicht, da sie variabel sind, und so wurde nur immer das erste Wort gelöscht, nicht aber die ganze Zeile. Ich möchte also immer die Zeilen Wohnort & Blabla aus dem Array (nicht aus der Datei, die soll unverändert bleiben) löschen, und dies dann anzeigen. Wäre gut wenn das jemand einem PHP-Anfanger erklären könnte.

Danke schonmal. ;)

DGL-luke 12. Mai 2006 16:12

Re: [PHP] Zeilen in einem Array lokalisieren und löschen
 
Delphi-Quellcode:
$regex = "=Wohnort|blabla="

for ($i = 0 ; $i < count($array); $i++)
  if preg_match($regex, $array[i])
    array_delete(i);
there you go... allerdings ist ein regex da fast schon oversized. strpos == 0 würd schon reichen.

S2B 12. Mai 2006 16:14

Re: [PHP] Zeilen in einem Array lokalisieren und löschen
 
Ich würde das Array vorher "vorsortieren", etwa so:
Code:
$zeilen = file('xxx.txt');
$items = array();
$i = 0;
foreach ($zeilen as $zeile)
{
  if (trim($zeile) == '')
  {
    $i++;
  }
  else
  {
    $items[$i][] = $zeile;
  }
}

foreach ($items as $item)
{
  // gibt den Namen aus
  echo $item[0];

  // gibt die Zeit aus aus
  echo $item[1];

  // ...
}
Edit: OK, nur halb beantwortet... :stupid:

bigg 12. Mai 2006 16:17

Re: [PHP] Zeilen in einem Array lokalisieren und löschen
 
hi,

es ist doch relativ einfach, du hast zwei Konstanten:
1. 'Name:'
2. 'Zeit:'

Jetzt kannst du mit Hilfe einer Schleife jedes Element des Array's durchlaufen und überprüfen, ob in der jeweiligen Zeile Name bzw. Zeit vorkommt. Wenn nicht wird die jeweilige Zeile nicht ausgeben.

Um nun an den Variablen-Teil zu kommen, musst du die Gesamtlänge der Zeile kennen. Existiert zum Beispiel "Name:" in der jeweiligen Zeile, kopierst du den String von der Länge(Name:) bis zur Länge(Zeilenende) und gibtst ihn aus.

Balu der Bär 12. Mai 2006 16:23

Re: [PHP] Zeilen in einem Array lokalisieren und löschen
 
Ich danke euch, hab mal wieder auf dem Schlauch gestanden. :wall:

Edit: Hier nochmal der komplette Code, array_delete gibt es imho nicht, oder ?
Folgendes geht aber:
Code:
      $regex = "=x|y=";
      for ($i = 0; $i < count($zeilen); $i++)
       {
        if (preg_match($regex, $zeilen[$i])) {
         unset($zeilen[$i]);
         $zeilen = array_values($zeilen);
        }
       }


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz