php.de

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

 
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 3,00 durchschnittlich.
Alt 25.08.2008, 02:37  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard [Erledigt] Probleme mit \t aus XML Datei

Hi Leute,

Ich bastle gerade an einer Log-Klasse für mein neues Projekt.
Diese Klasse wird über eine XML Datei konfiguriert.
In der XML steht unter anderem wie die Daten von den Nachrichten abgerückt werden sollen, also z.B.
Zitat:
[08/25/08 - 02:33:05] Nachricht die geloggt wird.
In diesem Beispiel ein TAB, also \t.
In der config.xml steht dafür
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<logbook_config>
    <dir>logs</dir> <!-- relative to RSR root directory -->
    <file>log.txt</file> <!-- prepended with date -->
    <advanced>
        <!-- keep these settings unless you are sure about what you are doing -->
        <timezone>Europe/Berlin</timezone> <!-- available timezones on http://php.net/manual/en/timezones.php -->
        <local>ge</local> <!-- seperate locals by comma, available locals on http://www.w3.org/WAI/ER/IG/ert/iso639.htm -->

        <timeformat>%m/%d/%y - %H:%M:%S</timeformat> <!-- available formats on http://php.net/manual/en/strftime -->
        <seperator>\t</seperator> <!-- usually a tab -->
        <level>All</level> <!-- use levels: All, Warnings, Errors (lower levels include higher ones) -->
        <eol>\n</eol> <!-- End of line character (\n) or (\r\n) -->
    </advanced>
</logbook_config>
Dass Problem ist, dass PHP beim einlesen nicht automatisch ein tab daraus macht, sondern ein \t ausgibt, also in PHP praktisch \\t.
Nun habe ich einfach diese Zeichen ersetzt und zwar so
PHP-Code:
$search = array("\\t""\\n""\\r""\\0""\\x0B");
$replace = array("\t""\n""\r""\0""\x0B");
$this->separator str_replace($search$replace, (string)$config->advanced->separator); 
Das funktioniert einwandfrei bei einem \n, bei \t aber passiert gar nichts.
Es wird zwar kein "\t" mehr ausgegeben, aber ein Tab gibt es auch nicht (sprich Zeichen weg xD). Also weg kann es ja nicht sein xD, aber habt ihr eine Idee woran das liegt?
__________________
Frank ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.08.2008, 03:45  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Also ich sehe nicht warum es mit \n klappen sollte und \t nicht.

Ich wuerde es so handhaben, dass genau das Zeichen oder die Zeichen, die in <sep> drinnestehen, auch verwendet werden. Wenn du also einen echten Tab reinschreibst, wird auch ein echter Tab verwendet. Um sicherzustellen dass kein XML-Parser deine Whitespaces rausoptimiert, koenntest du CDATA nehmen.
Chriz ist offline  
Alt 25.08.2008, 10:25  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

*Solltest du CDATA nehmen.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline  
Alt 25.08.2008, 11:29  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Frank Beitrag anzeigen
Dass Problem ist, dass PHP beim einlesen
Erzähl uns bitte mehr über dieses "Einlesen".
David ist offline  
Alt 25.08.2008, 12:05  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von David Beitrag anzeigen
Erzähl uns bitte mehr über dieses "Einlesen".
PHP-Code:
        $config simplexml_load_file(BASE.DS.CONFIG.DS."logbook.xml");
        
$this->dir = (string)$config->dir;
        
$this->file = (string)$config->file;
        
$this->timezone = (string)$config->advanced->timezone;
        
$this->timeformat = (string)$config->advanced->timeformat;
        
$search = array("\\t""\\n""\\r""\\0""\\x0B");
        
$replace = array("\t""\n""\r""\0""\x0B");
        
$this->separator str_replace($search$replace, (string)$config->advanced->separator);
        
$this->level = (string)$config->advanced->level;
        
$this->eol str_replace($search$replace, (string)$config->advanced->eol); 
Ich werde das mit CDATA ausprobieren. Danke für den Tipp
__________________
Frank ist offline  
Alt 25.08.2008, 12:11  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$sfn 
'test.php.de.xml';
$sxml '<e>'.chr(92).'t</e>';
file_put_contents($sfn$sxml);
$config simplexml_load_file($sfn);
$s = (string)$config;
for(
$i=0$i<strlen($s); $i++) {
    echo 
ord($s[$i]), ' ';
}
Das gibt bei mir erwartungsgemäß 92 116 aus. Es wurden also die beiden Zeichen \ und t eingelesen.
David ist offline  
Alt 25.08.2008, 13:53  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

So, ich habe das mit dem CATA ausprobiert, und nachdem es nicht funktioniert hat, habe ich noch einmal genau hingesehen.
Dabei ist mir aufgefallen das in meiner xml
Code:
<seperator>
stand und ich in mienem script nach separator gefragt habe -.-

Jetzt geht auch meine erste Variante, aber das mit dem CDATA find ich fast besser. Ich denke ich werde diese Variante mit dem CDATA nehmen.

Danke für die Hilfe
__________________
Frank ist offline  
Alt 26.08.2008, 08:23  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Denk auch an die Versionserhoehung bei Aenderung, sonst kannst du die alten Logfiles nicht mehr lesen und interpretieren.
Chriz ist offline  
Alt 26.08.2008, 10:12  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

??? Die Version des Konfigurationsformats wird doch garnicht gespeichert?
David ist offline  
Alt 26.08.2008, 10:53  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Eben.

Nach einer Formataenderung ist die Info wie das Logfile aufgebaut war und damit fuer ein Skript auszuwerten ist eben verloren .. Wenn das egal ist, scheint ja das Logfile nur fuers Auge zu sein, dann ist ein Konfigurator dafuer aber ueberfluessig. Ich aender meine Meinung ja nicht staendig, ob etwas lesbar und uebersichtlich ist.
Chriz 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
Datei durchsuchen Wöllchen Beitragsarchiv 3 02.03.2006 22:23
Datei namenendlich ändern, aber alte datei dabelassen BartTheDevil89 PHP Tipps 2006 17 21.02.2006 22:07
Probleme mit Klasse in includierter Datei Simon9990 PHP Tipps 2006 3 18.02.2006 18:25
[Erledigt] Datei mit &amp;amp;amp;amp;quot;w&amp;amp;amp;amp;quot; schreiben -&amp;amp;amp;amp;gt PHP-Fortgeschrittene 17 30.12.2005 13:58
probleme mit rechten => datei upload ph!l PHP Tipps 2005-2 5 29.09.2005 10:12
Probleme mit Pfad zum Datei hochladen PHP Tipps 2005-2 6 13.06.2005 13:26
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Includete Datei nicht gleich ausgeben Madden PHP-Fortgeschrittene 1 12.05.2005 00:19
xfdf Datei mit PHP an eMail senden Problem: Leere Datei PHP Tipps 2004-2 1 07.12.2004 12:25
Probleme mit Datei Upload PHP Tipps 2004-2 2 28.11.2004 16:37
Dateien lesen und schreiben [mehr als: r,a,w]? PHP Tipps 2004 4 24.10.2004 18:53
Zeilenumbrüche & Neudatein mit PHP PHP Tipps 2004 5 21.10.2004 11:38
(ich schonwieder) Link seite automatisch imported_DJ Nuno PHP Tipps 2004 14 19.08.2004 17:42
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04
Datei Upload mit PHP - Probleme PHP Tipps 2004 12 04.06.2004 12:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
\\t, konfigurator xml

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