php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.05.2006, 15:42  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard String in mehrere kleine Teile zerlegen

Hi,

lese mit fopen eine Datei aus, die pro Zeile mehrer hundert Zeichen hat.

Nun habe ich eine Liste, die mir sagt wo verschiedene Datensätze beginnen und enden:

Bsp: Artikelnr (von Zeichen 10 bis 20), Usernummer (von Zeichen 25 bis 30), usw, usw.

Ich habe mir überlegt, ein Array anzulegen, in das ich gespeichert habe an welchen Stellen er umbrechen soll.

So lese ich jede Zeile Zeichenweise ein (was aber suuuper lange dauert, weil die Datei ca. 30000 Zeilen hat mit mehren hundert zeichen pro Zeile).

Code:
$daten = array('8', '20', '48', '58', '67', '93','107','119','129','141','146','158','161','170','173','182','194','197','207');
$ende = 18;

for ($counter = 0; !feof($handle); $counter++){
  $buffer = fgetc($handle);
  
    if ($array_counter == $ende){ //Wenn das Array im letzten Element ist
       $array_counter = 0; $counter = 0; //Fange von vorne an
    
    }else if ($counter >= $daten[$array_counter]  && $counter < $daten[$array_counter]) echo $buffer;
     else if ($daten[$array_counter] == $counter){ // Wenn Counter gleich der 
               $array_counter++; echo ("\n"); //Stelle ist erhöhe array_counter
                }
}
fclose ($handle);
Mein Code ist sehr ineffizient und daher dachte ich mir, dass ich die Datei Zeilenweise einlese. Mein Problem ist, wie kann ich den String dann teilen, oder gibt es eine bessere Lösung?

Gruss
unknown
Unknown ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.05.2006, 15:46  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

1. Frage : Woher bekommst du deine Datei ????
2. Frage : Warum ist diese nicht ordentlich mit Trennern versehen .. ??

3. Frage :

PHP-Code:
<?php
if ($counter >= $daten[$array_counter]  && $counter $daten[$array_counter]) 
$string '$string$buffer'// wird nicht geparsed !! Absicht ?
?>
Hinweis:
Bitte mit einfügen und ausgegebene Fehler mit korrigieren ..
PHP-Code:
<?php
error_reporting
(E_ALL);
?>
M3g4Star ist offline  
Alt 23.05.2006, 15:48  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard

Moin

die Daten liegen auf dem Server (werden bereitgestellt)

und nein es gibt keine vernünftigen Trennzeichen (sonst wäre das alles wesentlich einfacher

und zu 3) jupp war Absicht

zu 4) Es geht mir eigentlich nur um den Algorithmus (der Code läuft so natürlich nicht), aber ich schätze man versteht, was da passiert

Gruss
unknown
Unknown ist offline  
Alt 23.05.2006, 15:52  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Wenn das Absicht ist versteh ich deinen Code nicht weil dann brauchst du $buffer überhaupt nicht ???!!

Wo leist du da überhaupt was ein !?

du willst ne Zeile einlesen und dann für jedes Array Element was machen ..

klingt nach http://de2.php.net/manual/de/control...es.foreach.php
M3g4Star ist offline  
Alt 23.05.2006, 15:57  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard

Moin,

hatte den Code mal zum Testen von einem C Programm in PHP gewurschtelt, um zu sehen wie schnell er die Daten durchgeht.

In Pseudo Code soll er folgendes machen:

Lese jede Zeile ein und Teile sie an bestimmten Stellen in Strings.
Mache dies bis EOF

Frage wäre ob es eine Fkt gibt, die einen String an bestimmten Stellen teilt, oder ob es eine andere Möglichkeit gäbe

Gruss
unknown
Unknown ist offline  
Alt 23.05.2006, 16:07  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

also mit file() kannst du dir deine datei in ein ARRAY einlesen lassen.

Dannach kannst du dieses Array durchgehen .. $array[0] = erste zeile , $array[1] = zweite Zeile etc.

dannach musst du dann vllt mittels array_walk() dein "Datei Array" durchlaufen und denn musst du dort meinetwegen das foreach() einbauen ..

ist geschmackssache ...

du kannst mittels explode() einen String "teilen" aber problem ist dir fehlt der Seperator !!
M3g4Star ist offline  
Alt 23.05.2006, 16:19  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard

Moin,

alles klar. Habe die Datei als Array eingelesen.

Das foreach durchläuft doch nun das gesamt Index. Die Frage beleibt jedoch, wie ich an bestimmten Stellen ein Array/string erzeugen kann:

Bsp:
$lines = file ('test.txt');

$lines[0] wäre somit die erste Zeile. Wie teile ich nun den Inhalt der Zeile von Zeichen 7 bis 10 in den String xy von 15 bis.....

Danke für die Hilfe

Gruss
unknown
Unknown ist offline  
Alt 23.05.2006, 16:20  
JK
Benutzer
 
Registriert seit: 11.10.2005
Beiträge: 81
JK
Standard

Zitat:
Zitat von M3g4Star
du kannst mittels explode() einen String "teilen" aber problem ist dir fehlt der Seperator !!
Wenn ich das richtig verstanden habe ist aber angegeben, an welcher Stelle geteilt werden soll, also einfach die datei wie M3g4Star geschrieben hat in ein Array einlesen und dann mit $wert1zeile1 = substr($array[0], 0, 10) die einzelnen werte auslesen. Zu Lösen z.B. mit einem foreach.
__________________
Water Wars - Jetzt anmelden: http://waterwars.de
JK ist offline  
Alt 23.05.2006, 16:21  
Neuer Benutzer
 
Registriert seit: 24.09.2005
Beiträge: 26
Unknown
Standard

Moin,

hammer genau das habe ich gesucht

Many thx.

Gruss
unknown
Unknown ist offline  
Alt 23.05.2006, 16:33  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Na siehste so schwer war's nich
M3g4Star 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
vordefinierte teile aus einem string auslesen RapidGirl PHP Tipps 2008 6 01.09.2007 14:15
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36
String mit preg_match() zerlegen Connar PHP Tipps 2006 15 31.10.2006 11:13
Kleine Frage zu WHERE Klausel in SQL String Plague Datenbanken 1 09.08.2006 11:23
string aus scmxx zerlegen Sachse PHP Tipps 2006 1 18.03.2006 19:19
[Erledigt] String in Zeilen zerlegen PHP Tipps 2005 3 12.05.2005 18:42
String zerlegen PHP Tipps 2005 4 06.05.2005 20:42
String zerlegen php1 PHP Tipps 2005 2 30.04.2005 19:39
String in seine Einzeilteile zerlegen PHP Tipps 2005 2 08.04.2005 00:09
where string von einer funktion zu anderen transportieren PHP Tipps 2005 5 03.03.2005 16:29
String zerlegen und jeweils als Bild ausgeben PHP Tipps 2005 6 08.02.2005 15:19
URL String zerlegen für Datenbank Dave Waterstone PHP Tipps 2004 3 03.11.2004 11:39
string, teile ausschneiden PHP Tipps 2004 2 14.10.2004 10:31
String zerlegen im Array PHP Tipps 2004 4 29.06.2004 08:33
String zerlegen PHP-Fortgeschrittene 2 08.06.2004 18:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
c-control pro string teilen, string in mehrere teile splitten, sql string auseinander, \c programm\ string teilen, c string in gleich lange teile zerlegen, php \sql string\ zerlegen preg_match, string in zwei gleich lange teile zerlegen php, string trennen und ausgeben php zähler, array in drei teile zerlegen, string nach bestimmten zeichen in teile zerlegen php, textdatei einlesen und in variablen zerlegen in php, php string zerlegen zeichen, php string in mehrere teile trennen, php string in mehrere teile aufteilen, sql string mehrere teile zerlegen, kleine teile zerlegen, sql text in datensätze zerlegen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:05 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.