Bonjour,

J'ai un peu personnalisé la classe DOM pour lui attribuer des valeurs par défaut et me faciliter ainsi un petit peu la vie. Mais j'ai un problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class xml extends DOMDocument {
 
	public function __construct($encoding, $template) {
		parent::__construct('1.0', $encoding);
		$pi = parent::createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="'.$template.'"');
		parent::appendChild($pi);
	}
 
	public function createElement($name, $content) {
		if (empty($content)) {
			return parent::createElement($name);
		}
		else {
			return parent::createElement($name, utf8_encode($content));
		}
	}
}
?>
Lorsque que je l'utilise comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
function error_handler($level, $message) {
	switch ($level) {
		case E_USER_ERROR:
			$xml = new xml('UTF-8', DIR_TPL.'error.xsl');
			$document = $xml->createElement('document');
			$xml->appendChild($document);
			$title_website = $xml->createElement('title_website', utf8_encode($GLOBALS['title']));
			$document->appendChild($title_website);
			$error = $xml->createElement('error', utf8_encode($message));
			$document->appendChild($error);
			echo $xml->saveXML();
			break;
	}
}
?>
Il m'affiche le titre du site avec des caractères spéciaux tandis que le message d'erreur normalement.

Je comprends rien :s
Et ça se produit exactement de la même façon mais inversement si je retire utf8_encode(): le titre s'affiche normalement et le message d'erreur avec des caractères spéciaux.

Merci de votre aide.