php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.10.2006, 21:29  
Neuer Benutzer
 
Registriert seit: 10.03.2006
Beiträge: 28
Mike²
Standard Wie exploden?

Ich möchte eine Datei nach folgendem Muster parsen:

Code:
File Version 1.0
<file>
<nt Frank;Paulsen;Köln;21071981;>
<nt Michael;Maier;Berlin;17121983;>
</file>
ich versuche das folgendermaßen:

PHP-Code:
  while (!feof ($handle)) {
   
$buffer fgets($handle);
   if (
substr($buffer01)!= "File")
    {
    
$foo explode(";"$buffer);
    if (
count($foo)>1)
        {
          
$Name $foo[0];
          echo 
"Name: 
"
,$Name,"
"
;
          
$Nachname $foo[1];
          echo 
"Nachname: ",$Nachname,"
"
;
          
$Ort $foo[2];
          echo 
"Ort: ",$Ort,"
"
;
          
$Gebdatum $foo[3];
          echo 
"Gebdatum: ",$Gebdatum,"
"

Ich erhalte alle Daten außer dem Namen.
Wahrscheinlich weil erst nach dem ersten ";" geparst wird...
Wie kann ich auch den Namen erhalten?


EDIT:
Der Name klappt jetzt.
PHP-Code:
$Name substr($foo[0], 4);
          echo 
"Name: 
"
,$Name,"
"

Jetzt bleibt nur noch der Ausschluß der 2ten Zeile (Programm)...


Und dann noch eine kleine Frage...
Später wird es Dateien nach diesem Muster geben:
Code:
File Version 1.0
Programm Version 1.0
<file>
<nt Frank;Paulsen;Köln;21071981;>
<nt Michael;Maier;Berlin;17121983;>
</file>
Hab schon so versucht:
PHP-Code:
   if (substr($buffer01)!= "File" || "Programm"
Klappt aber leider nicht.

Vielen Dank für eure Hilfe.
Gruß Mike²
Mike² ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.10.2006, 21:56  
CIX88
Gast
 
Beiträge: n/a
Standard

Das Muster sieht nach XML aus.
Vielleicht erstmal damit anfangen:
http://php.net/simple_xml

und dann die Zeilen mit nt ... mit explode zerlegen.
 
Alt 25.10.2006, 21:58  
Neuer Benutzer
 
Registriert seit: 10.03.2006
Beiträge: 28
Mike²
Standard

Mein Server besitzt aber leider noch kein PHP 5...
Das hatte ich mir schon angeschaut.
Mike² ist offline  
Alt 25.10.2006, 22:00  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
if (substr($buffer01)!= "File" || "Programm"
Das wird immer true sein. Schau nochmal ins Manual was die Parameter bei substr machen.


http://de.php.net/manual/de/function.substr.php

du prüfst, ob ein einzelner Buchstabe ungleich einem string von mindest 4 Zeichen ist ... da kann nur true rauskommen egal welches Zeichen aus deiner Datei kommt.
 
Alt 25.10.2006, 22:07  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
<?php if (substr($buffer, 0, 1)!= "File" || "Programm")
Wobei diese Zeile Unfug ist.
Besonders was ab || steht ...
 
Alt 25.10.2006, 22:15  
Gast
 
Beiträge: n/a
Standard

@cix88 erstmal den Fehler vor || beheben dann amchen wir da weiter und ob die Zeile Unfug ist ...
 
Alt 25.10.2006, 22:19  
CIX88
Gast
 
Beiträge: n/a
Standard

Mir egal ...
 
Alt 25.10.2006, 22:26  
Neuer Benutzer
 
Registriert seit: 10.03.2006
Beiträge: 28
Mike²
Standard

Ja gut, dann halt nur:
PHP-Code:
if (substr($buffer01) != "F"
Aber im Manual steht trotzdem nix vom ausschließen einer 2ten Zeile...

EDIT:
Jetzt hab ich halt mal mit nem if/else realisiert...
PHP-Code:
if (substr($foo[0], 03) == "Pro")
        {
         ...
        }
        else
        {
         ...
        } 
Mike² ist offline  
Alt 26.10.2006, 14:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

solange deine struktur so bleibt und du nicht mit xml arbeiten möchtest, empfehle ich dir, die daten mit file() einzulesen. Dann hast du jede zeile schon mal als array element und kannst diese leichter bearbeiten und ausschließen.
nikosch ist offline  
Alt 26.10.2006, 20:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

ich kenne ja deine genaue struktur nicht, aber ich würde daten die übersprungen werden sollen irgendwie gesondert auszeichnen z.B. so
Code:
# File Version 1.0
# Programm Version 1.0
oder in nem extra tag
Code:
<meta>
File Version 1.0
Programm Version 1.0
</meta>
dann bist du viel flexibler und hast es leichter, die daten auszusondern die du nicht benötigst. mit substr () must du für jede weitere information den quellcode ändern...
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
csv datei exploden PHP Tipps 2004-2 2 27.12.2004 20:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.