1 pièce(s) jointe(s)
ob_get_clean et sortie HTTP : garbage ajouté au flux
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 :
Code:
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(); |
la fin du script :
Code:
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;
?> |
le fichier créé ne contient ni espaces ni chiffres autour des flux xml dans /tmp/, ni ligne vides.
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