SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.09.2002, 00:14:16
A.Bauer A.Bauer ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 4
Leere Datensätze im Array löschen

Hallo,

kann mir jemand helfen? Ich habe eine datei xyz.txt in der mehrere Datensätze stehen, welche durch "Leerzeichen" voneinander getrennt sind (ist so vorgegeben).
Einer der Datensätze enthält Zahlen, welche aber unterschiedlich lang sind (zw. 6 bis 8 Stellen). Da ja kein Trenner vorhanden ist, wird bei den kleinen Zahlen ein weiterer Datensatz erzeugt, welcher leer ist.
Dadurch passt die Übergabe an eine Tabelle nicht. Wie kann ich diese leeren Datensätze entfernen?

Bsp. Daten in der .txt
20020607 19:31:48 10211 ADD REG domaine.de
20020618 01:09:43 100283 DEL REG domaine.info

Ausgabe sieht dann so aus
20020607|19:31:48|10211| | ADD|REG|domaine.de
20020618|01:09:43|100283|DEL|REG|domaine.info

Weiss jemand was ich da machen kann?

Gruss A.Bauer
Mit Zitat antworten
  #2  
Alt 27.09.2002, 00:24:23
Benutzerbild von SPiC
SPiC SPiC ist offline
Junior Member
 
Registriert seit: Aug 2002
Ort: Münster/Germany
Beiträge: 324
SPiC eine Nachricht über ICQ schicken
Hi!

nimm doch einfach fgetcsv()

Ich habe mal das Beispiel aus dem PHP-Manual auf Deinen "Begrenzer" angepasst.
Code:
$row = 1;                                  // Anzahl der Arrays
$fp = fopen ("test.csv","r");              // Datei wird zum Lesen
                                           // geöffnet
while ($data = fgetcsv ($fp, 1000, " ")) { // Daten werden aus der Datei
                                           // in einen Array $data gelesen
// Hier kannst Du das Array $data verarbeiten....

}
fclose ($fp);

Nähere Infos zu fgetcsv() unter

http://www.php.net/manual/de/function.fgetcsv.php


=:-) Sebastian
__________________
Member of the PHP Development Group

spic@php.net
www.php.net
Mit Zitat antworten
  #3  
Alt 27.09.2002, 00:38:14
A.Bauer A.Bauer ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 4
Mit dieser Anweisung arbeite ich schon. Aber ich habe schon alles mögliche versucht ich bekomme diesen leeren Datensatz nicht raus. Da er ja nicht in allen Zeile auftritt.
Gibt es eine Anweisung in der ich sagen kann wie gross (also wie viel Zeichen) ein Datensatz haben soll?
Mit Zitat antworten
  #4  
Alt 27.09.2002, 00:44:19
Benutzerbild von SPiC
SPiC SPiC ist offline
Junior Member
 
Registriert seit: Aug 2002
Ort: Münster/Germany
Beiträge: 324
SPiC eine Nachricht über ICQ schicken
Häh? Bei fgetcsv() ist es doch irrelevant, wie viele Zeichen ein Feld hat.

Du kannst es aber auch mal folgendermaßen versuchen:

Lies die Zeile über fgets() ein und trennen den String über explode()
Im PHP Manual ist sogar ein Beispiel dabei, dass genau auf Dich zutrifft (Trennung durch Space).
http://www.php.net/manual/de/function.explode.php
__________________
Member of the PHP Development Group

spic@php.net
www.php.net
Mit Zitat antworten
  #5  
Alt 27.09.2002, 00:46:37
Benutzerbild von SPiC
SPiC SPiC ist offline
Junior Member
 
Registriert seit: Aug 2002
Ort: Münster/Germany
Beiträge: 324
SPiC eine Nachricht über ICQ schicken
Oder willst Du die Daten auf 6 Stellen allgemein kürzen?

Dann kannst Du auch per subrtr()
http://de.php.net/substr nur die ersten sechs Zeichen ausgeben...
__________________
Member of the PHP Development Group

spic@php.net
www.php.net
Mit Zitat antworten
  #6  
Alt 27.09.2002, 00:57:01
A.Bauer A.Bauer ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 4
Da ist es ja was ich nicht verstehe, aber dadurch das die Zahlen unterschiedlich gross sind, sind da mehrere Leerzeichen hineinander und das führt dann zu dem leeren datensatz.

Habs auch schon explode versucht. Geht auch nicht.
Ich schau mir das aber mal an bei php.net

Nein ich kann die nicht kürzen, die sollen alle so bleiben.
Mit Zitat antworten
  #7  
Alt 27.09.2002, 02:35:29
Ben20
Guest
 
Beiträge: n/a
Zum allgemeinen Verständnis. Was A.Bauer meint sind glaube ich keine leeren Datensätze sondern leere Felder.

Versuchs doch mal so:
Bei jedem Datensatz (also jeder Zeile) prüfst Du jedes Feld. Wenn eines Leer - sprich nur Leerzeichen enthält löschst Du das Feld aus dem Array
Mit Zitat antworten
  #8  
Alt 27.09.2002, 09:33:31
Benutzerbild von SPiC
SPiC SPiC ist offline
Junior Member
 
Registriert seit: Aug 2002
Ort: Münster/Germany
Beiträge: 324
SPiC eine Nachricht über ICQ schicken
Ich glaube, ich verstehe...

Die TXT-Datei sieht also so aus:

20020607[s]19:31:48[s]10211[s][s][s]ADD[s]REG[s]domaine.de
20020618[s]01:09:43[s]100283[s]DEL[s]REG[s]domaine.info
[s]=Space
Ist das so richtig?

Wenn ja, würde ich fgets() verwenden, anschließend entfernst Du alle "Doppelspaces" mit str_replace() und dann kannst Du ein explode() machen, um die einzelnen Felder zu bekommen.
__________________
Member of the PHP Development Group

spic@php.net
www.php.net
Mit Zitat antworten
  #9  
Alt 29.09.2002, 22:21:01
A.Bauer A.Bauer ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 4
Hallo,

danke nochmal für die Hilfe und sorry, dass ich heute erst wieder reinschaue. Ich dachte es hat niemand mehr geantwortet, war ja auch schon ziemlich spät gewesen. :))

Trotzdem nochmal danke!! Ich habe die Datei jetzt über Excel in eine csv mit Delimiter umgewandelt. Was zwar nicht im Sinne des Erfinders und ein bisschen umständlich war, aber es ging.

Ich habe aber noch eine andere Frage. Wie kann ich überprüfen, ob ein, aus einem Datum erzeugter Timestamp, auch das richtige Datum beinhaltet?


A.Bauer
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:35:11 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt