Helo tout le monde :p
Je suis depuis ce matin sur une class de log, et je rencontre un petit problème ...
Je veux enregistrer la Trace de mon erreur ... tout fonctionne ...
Tout du moins jusqu'a ce que je jette un petit coup d'oeil à mon fichier ... ma chaîne est tronqué :s J'ai essayé diverses méthodes (overflow -> plusieurs noeuds, cdata, ...) mais rien à faire
Ma trace :
$Trace = utf8_encode(serialize($this -> getTrace()));
J'obtiens donc une chaine de caractère de longeur variable (mais très longue (+2000 caractères pour certaines))
Et mon code :
// On charge le Doc XML
$oDom = new DOMDocument('1.0', 'utf-8');
$oDom -> load('file.xml');
// On récupère le 1er noeud -> "<xml />"
$n = $oDom -> firstChild -> appendChild($oDom -> createElement('log'));
// On enregistre date, classerror, message, ligne, code, ...
// [... code ...]
// La trace
$Trace = utf8_encode(serialize($this -> getTrace()));
// On enregistre la Trace
$oTrace = $n -> appendChild($oDom -> createElement('the_trace'));
$oTrace -> appendChild( $oDom -> createTextNode( $Trace ) );
Et rien à faire avec ces méthodes :
// OVERFLOW ???
$split = str_split(utf8_encode(serialize($this -> getTrace())), 200);
foreach( $split as $_trace )
{
$oTrace = $n -> appendChild($oDom -> createElement('trace'));
$oTrace -> appendChild( $oDom -> createTextNode($_trace) );
}
// CDATA ???
$oTrace = $n -> appendChild($oDom -> createElement('the_trace'));
$oTrace -> appendChild( $oDom -> createCDATASection( $Trace ) );
La seul solution que j'ai trouvé ... c'est du
rawurlencode()
berk ! Serait-ce donc un problème d'encodage ??
++
Si ma reponse te convient, merci de l'accepter ! 