Bonsoir à tous,
Sur la page d'accueil d'un site sous typo3, nous affichons une transformation HTML d'un flux RDF.
Le script qui produit ce flux rdf est développé 'maison' et se branche sur une base de planning, GRR. Tout cela fonctionnait convenablement sous PHP 5.1.2. Nous avons voulu passer l'application Grr sous PHP 5.2.9; l'application fonctionne sans problème, mais le flux rdf produit contient désormais des chiffres et lettres autour des balises root <rdf:RDF> et </rdf:RDF> ce qui invalide complètement le flux.
Voilà un bout de code du script de création du flux :
l'en-tête du script :
la fin du script :
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 <?php ini_set('display_errors','off'); //error_reporting(E_ERROR | E_WARNING | E_PARSE); if (extension_loaded('mbstring') || extension_loaded('MBSTRING')) { ini_set('mbstring.http_output', 'UTF-8'); ini_set('mbstring.internal_encoding', 'UTF-8'); mb_detect_order('ISO-8859-1,ISO-8859-15,UTF-8'); mb_regex_encoding('UTF-8'); } else if (function_exists('iconv')) { ini_set('iconv.input_encoding', 'ISO-8859-1'); ini_set('iconv.internal_encoding', 'ISO-8859-1'); ini_set('iconv.output_encoding', 'UTF-8'); } ob_start();
le fichier créé ne contient ni espaces ni chiffres autour des flux xml dans /tmp/, ni ligne vides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $output .= $prologue . $RDF . $channel . $liste . '</channel>' . $items . '</rdf:RDF>'; header('HTTP/1.1 200 OK', true); header('Content-Type: application/rss+xml; charset= utf-8', true); $cont = ''; print $output; $cont = ob_get_clean(); $cont = mb_ereg_replace('^\d+', '', $output); $cont = mb_ereg_replace('\d+$', '', $output); $cont = trim($cont); file_put_contents('/tmp/rdf_planning.test', $cont . 'SORTIE DE TEST : ' . date('d-m-H-i')); print $cont; ?>
Par contre tous les tests faits avec des clients HTTP fournissent ce garbage (sauf firefox), alors que cela ne le fait pas avec l'ancien flux. : fopen avec php cli en mode interactif, fopen dans le script qui affiche les flux
si vous voulez tester voilà deux urls :
http://planning.ehess.fr/rss/rdf.php (le flux sous PHP 5.2.9)
http://www.ehess.fr/planning/rss/rdf.php (l'ancien flux sous PHP 5.1.2)
en pièce jointe le script de création rdf
Merci beaucoup par avance pour toute, là je sèche complètement.
Frédéric
Partager