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 ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken 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 29.03.2009, 17:43:38
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
Outlook2007 Kontakte über CSV auslesen

Ich hab mir vor ner Zeit schon mal ein kleines Script geschrieben, mit welchem ich mir Outlook-Kontakte über eine *.csv-Datei importieren kann.

Dazu hab ich die .csv-Datei einfach mit file() eingelesen und mit explode() aufgespaltet, danach in einer foreach-schleife mir die benötigten Werte geholt.

Das funktionierte soweit ganz gut, jedoch seit OL2007 hab ich irgendwie mit ungewollten Zeilenumbürchen zu kämpfen, die die "Datensätze" auseinander reissen.
Bei Outlook2007 wird die erste Zeile bei "fgetcsv" zerrissen die folgenden korrekt, bei file() & explode() ist die erste Zeile korrekt und alle anderen werden zerrissen.

Hab auch mit "fgetcsv" versucht... und hab festgestellt, das im Vergleich zu file() und explode() unterschiedliche Ergebnisse raus kommen.

Um das zu verdeutlichen hier mal ein Link, einmal OL2003 und OL2007
http://privatwebarea.dyndns.org/entw...seite/test.php

Hier noch der entsprechende Quellcode der beiden Möglichkeiten (nur PHP-Teil ohne HTML):
PHP-Code:
$datei $_POST['csv_datei'];
if(
$_POST['csv_datei'] == 'Alex_Outlook_Kontakte.CSV'$outlook 'Outlook 2007';
if(
$_POST['csv_datei'] == 'Outlook_gerhard1.CSV')      $outlook 'Outlook 2003';


if(isset(
$_POST['csv_datei'])){

$row 1;                                      // Anzahl der Arrays
$handle fopen ("./tmp/".$datei."","r");              // Datei zum Lesen öffnen
while ( ($data fgetcsv ($handle1000",")) !== FALSE ) { // Daten werden aus der Datei
                                               // in ein Array $data gelesen
    
$num count ($data);                      // Felder im Array $data
                                               // werden gezählt
    
$fgetcsv .= "<hr><strong>$num fields in line $row:</strong> <br>\n";
    
$row++;                                    // Anzahl der Arrays wird
                                               // inkrementiert
    
for ($c=0$c $num$c++) {              // FOR-Schleife, um Felder
        
$fgetcsv .= "[".$c."] ".$data[$c] . "<br>\n";            // des Arrays auszugeben
    
}
}
fclose ($handle);


$line 1;
$kontakte file("./tmp/".$datei."");
foreach(
$kontakte AS $kontakt){
    
$kontakt str_replace("\""""$kontakt);
    
$v explode(",",$kontakt);
    
$num count($v);
    
    
$file .= "<hr><strong>$num fields in line $line:</strong><br>\n";
    
$line++;
    
    foreach(
$v as $k => $value){
        
$file .= "[".$k."] ".$value."<br>";
    }
}

Vielleicht könnt Ihr mir ja auf die Sprünge helfen?!

Besten Gruß
Alex

Geändert von AlexD (29.03.2009 um 17:50:34 Uhr)
Mit Zitat antworten
  #2  
Alt 30.03.2009, 13:32:39
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Outlook2007 Kontakte über CSV auslesen

Ich vermute hier eher, daß es an der .csv selbst liegt. Anderen Falls könnte auch der Feldtrenner und die Zeichen für eingeschlossenen Text den Fehler verursachen.

Schau dir mal die .csv mit einem Editor an um die korrekten Feldtrenner und die Zeichen, die den Inhalt selbst einschliessen zu erkennen.
Ansonsten kann ich nur mal empfehlen die While-Schleife wie folgt zu testen.
PHP-Code:
//ob das Komma als Trennzeichen scheint ja klorrekt zu sein
while ( ($data fgetcsv ($handle1000",","\"")) !== FALSE ) {
//dein Code

Mit Zitat antworten
  #3  
Alt 30.03.2009, 13:40:48
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Outlook2007 Kontakte über CSV auslesen

Hab gerade mal unter WindowsMail ein paar Kontakte eingerichtet und exportiert.
Der Zeichensatz der Dati ist UTF-8 und die Feldtrenner sind Semikolons. Den enClosure scheint es nicht zu geben. Sollte OL2007 dies genau so speichern, müsstest du ein Semikolon als Feldtrenner nutzen. (";"). Allerdings bin ich der Meinung, daß dann das Script generell nicht korrekt laufen dürfte.
Mit Zitat antworten
  #4  
Alt 31.03.2009, 00:28:58
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: Outlook2007 Kontakte über CSV auslesen

Hi,

also WinMail und OL2007 trennen nicht gleich, die CSV ist anders aufgebaut.
Während Windows Mail nur mit Semikolon trenn, wird bei OL2007 mit Komma getrennt und der Wert in " " gesetzt.

Beispiel für WinMail:
Code:
Vorname;Nachname;2. Vorname;Name;Spitzname;E-Mail-Adresse;Straße (privat);Ort (privat);Postleitzahl (privat);Bundesland (privat); usw..
Outlook 2007
Code:
"Anrede","Vorname","Weitere Vornamen","Nachname","Suffix","Firma","Abteilung","Position","Straße geschäftlich","Straße geschäftlich 2", usw...
Hab die While-Schleife von Dir getestet, mit dem gleichem Ergebnis.
Mit Zitat antworten
  #5  
Alt 31.03.2009, 00:57:55
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Outlook2007 Kontakte über CSV auslesen

Zitat:
Zitat von AlexD Beitrag anzeigen
Hab die While-Schleife von Dir getestet, mit dem gleichem Ergebnis.
Hast du die Möglichkeit dir die Steuerzeichen in der .csv anzeigen zu lassen?
Da die erste Zeile ja vollständig gelesen wird, kann ich nur noch vermuten, daß da ein Steuerzeichen von OL gesetzt wird, welches als Zeilenende interpretiert wird.
Auffällig ist, daß es immer an der gleichen Stelle vorkommt.
Die Feldnummer zum Inhalt stimmt ja mit der Feldnummer der Spaltenüberschrift überein.
Bin allerdings ratlos, da ich dieses Problem noch nie hatte. Liegt vielleicht daran, daß ich eine .csv nicht von Microsoft Produkten erstellen lasse. :P

Ansonsten versuch mal zu Testzwecken die Zeilenlänge etwas zu verlängern. Auf 1500 oder so. (Der Wert für die Zeilenlänge muß ja größer sein als die Zeile tatsächlich ist um das Ende der Zeile korrekt ermitteln zu können)
Glaub zwar nicht, daß es daran liegt, da die erste Zeile ja korrekt ausgegeben wird aber man weiß ja nie.
Mit Zitat antworten
  #6  
Alt 31.03.2009, 01:07:06
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: Outlook2007 Kontakte über CSV auslesen

Also ich hab jetzt mal die Zeilenlänge verändert, und hab sie mal auf 1500 gesetzt...

und schau Dir mal an was fgetcsv nun macht.
Wenn ich auf den ersten Blick so hinseh, dann lag es wohl wirklich an der Zeilenlänge!!

Warum jedoch bei file() ein Zeilenumbruch ist....?!
Die Funktion sollte doch eine Datei Zeile für Zeile lesen, egal wie lang diese ist. Oder lieg ich hier falsch?!

Wie kann ich mir die Steuerzeichen anzeigen lassen?
Mit Zitat antworten
  #7  
Alt 11.04.2009, 17:32:19
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: Outlook2007 Kontakte über CSV auslesen

hatte mal ein ähnliches Problem, jedoch mit Files aus excel. Das Problem hat sich gelöst, als ich das File mit einem Editor in ein anderes Charset konvertiert habe. Details weiß ich leider nicht mehr.

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #8  
Alt 11.04.2009, 20:55:28
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Outlook2007 Kontakte über CSV auslesen

Zitat:
Zitat von AlexD Beitrag anzeigen
Wie kann ich mir die Steuerzeichen anzeigen lassen?
Hab diese Option in meinem Editor drin. Da kann ich Steuerzeichen ein/aus schalten.

file() liest die Datei bis zum angegebenen Wert oder bis zum Ende der Zeile ein. Sollte aber im Grunde die gleiche Routine nutzen wie fgetscsv() mit dem Unterschied, daß es nicht gleichzeitig die einzelenen Werte innerhalb einer Zeile ermittelt.

Der Zeichensatz könnte es natürlich auch sein. Allerdings hab ich keine Erfahrung, welchen Zeichensatz OL2007 nutzt.
Mit Zitat antworten
  #9  
Alt 11.04.2009, 20:57:14
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: Outlook2007 Kontakte über CSV auslesen

wenn man das original File hätte könnte man es ja mal testen..
__________________

the best way to be ready for the future is to invent it
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Aus 2 Tabellen gleichzeitig auslesen, nur wie? Zippo1979 PHP Grundlagen 3 04.04.2007 12:45:12
Auslesen von PHP-Dateien wes2503 PHP Grundlagen 5 23.11.2006 05:14:56
session_encode in DB gespeichert - Daten richtig, auslesen aber falsch CThuy PHP für Fortgeschrittene und Experten 0 25.07.2004 01:38:34
Auslesen der Besucher-IP DT625 PHP für Fortgeschrittene und Experten 4 16.05.2004 01:47:46
letzten (Daten-)satz aus Array auslesen pfuchs PHP für Fortgeschrittene und Experten 2 12.08.2003 11:05:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:44:58 Uhr.


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


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