Probleme mit MAC-Zeilenumbrüche

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme mit MAC-Zeilenumbrüche

    Hallo Leute,

    ich bräuchte mal wieder eure Hilfe!

    Bei der Ausgabe von Datensätzen einer MAC-TXT-Datei werden die zeilenümbrüche nicht erkannt. Das Script gibt leider alle Datensätze in einer einzigen Zeile aus. Bei Winwows TXT-Dateien tritt das Problem nicht auf! Wenn ich die MAC-Datei unter Windows im zB im Word-Pad öffne und ohne Veränderung wieder speichere, tritt das Problem auch nicht auf.

    Hier das Snippet:

    Quellcode

    1. ...
    2. <?php
    3. $Delimiter = "\t" // Daten Trennzeichen
    4. $Delimiter = str_replace("\\t", "\t", "$Delimiter");
    5. $Delimiter = str_replace("\\", "", "$Delimiter");
    6. function GetRecordFieldCount($FileName, $Delimiter)
    7. {
    8. $cnt = 0;
    9. $handle = @fopen($FileName, "r");
    10. if ($handle)
    11. {
    12. if (!feof($handle))
    13. {
    14. $buffer = fgets($handle, 4096);
    15. $arRecord = explode($Delimiter, $buffer);
    16. $cnt = sizeof($arRecord);
    17. }
    18. fclose($handle);
    19. }
    20. return($cnt);
    21. }
    22. $cnt = 0;
    23. $cnt = GetRecordFieldCount("import/$importfile_name", $Delimiter);
    24. ?>
    25. <table border="0" cellpadding="4" cellspacing="2">
    26. <TR>
    27. <?php for($i=1;$i<=$cnt;++$i)
    28. {
    29. echo "<TD bgcolor=\"#CCCCCC\">";
    30. echo "<strong>Datenspalte ".$i."</strong>";
    31. echo "</TD>";
    32. }
    33. ?>
    34. </TR>
    35. <?php
    36. $i = "0";
    37. $db_admin_level = file("import/$importfile_name");
    38. while (list ($line_num, $line) = each ($db_admin_level))
    39. {
    40. echo "<tr><td>";
    41. $datensatz_admin_level = explode($Delimiter,$line);
    42. $Delimiter2 = $Delimiter;
    43. $line = ereg_replace($Delimiter2, "</td><td>", $line);
    44. echo $line;
    45. $i++;
    46. echo "</td></tr>";
    47. }
    48. ?>
    49. </TABLE>
    50. ...
    Alles anzeigen


    Ich hoffe ihr könnt mir helfen!
    Schon mal Danke!

    Gruß KMD
  • file_get_contents klappt schon mit php 4.3 ;)

    aber warum überhaupt so kompliziert
    die [phpdoc]file[/phpdoc] methode packt die datei doch auch zeilenweise in ein array

    diese sollte intelligent arbeiten
    gibt eine extra option dafür
    http://www.easy-coding.de/php/ref.filesystem.html#ini.auto-detect-line-endings

    auto_detect_line_endings boolean

    Wenn aktiviert, prüft PHP die mittels fgets() und file() gelesenen Daten auf die Verwendung der Konventionen für Zeilenenden von Unix, MS-Dos oder Macintosh.

    Dies ermöglich PHP die Kompatibilität mit Macintosh Systemen, ist jedoch standardmäßig deaktiviert, da die Ermittlung der EOL Konventionen der ersten Zeile einen kleinen Performanceverlust bedeutet. Weiters verwenden einige Leute Carriage-Returns als Trennzeichen für Elemente, was auf Unix Systemen ein nicht rückwärtskompatibles Verhalten bedeuten würde.

    Anmerkung: Diese Konfigurationsoption wurde in PHP 4.3.0 eingeführt.