Explode function + encode
Bonjour à tous,
Je suis en train de créer un fichier php que j'héberge pour l'instant en local via Easyphp et son serveur apache. Ce fichier a pour but le suivi des actualités et publications de sites web. J'y ai inclus des flux rss, qui s'affichent parfaitement après avoir re-travaillé légèrement du code que j'ai trouvé sur la toile.
Cependant, tous les sites n'offrant pas cette technologie très utile, je dois donc extraire manuellement pour chaque site à suivre les informations qui doivent être ajoutées à ma page php.
Le code suivant me permet d'obtenir les données entre deux marqueurs :
Code:
1 2 3 4 5 6
| <?php
$buffer = implode('', file('http://www.url/'));
$array1 = explode("<balise de début>",$buffer);
$array2 = explode("<balise de fin->",$array1[1]);
$contents = $array2[0];
?> |
Code inséré dans <body>, à l'emplacement désiré :
Code:
1 2 3
| <font face="font choisie" size="chiffre">
<?php echo $contents ?>
</font> |
Cependant, deux difficultés se posent à moi :
1/ Même en insérant des balises <font> autour de echo identiques à celles au sein de ma page html, la taille de la police diffère
2/ Les caractères accentués sont mal lus par ma page php, qui est en UTF-8 alors que la page source est en Charset Latin
Après multiples heures de recherche sur internet, je pense cerner le problème mais je ne connais pas la synthaxe exacte du code à utiliser. Voici ce que j'ai ci-dessous :
Code contenu dans mon fichier index.php:
Code:
1 2 3 4 5 6 7 8 9
| <?php
$buffer = implode('', file('http://www.lefigaro.fr/economie/'));
$array1 = explode("<!--sdvF=templates_v6/pages/Colonne_NewsTop.php -->",$buffer);
$array2 = explode("<!--sdvD=templates_v6/pages/Colonne_NewsBottom-->",$array1[1]);
$contents = $array2[0];
//exemple pour le site du Figaro
// ensuite, présence d'autre code php fonctionnel, qui se termine par
header('Content-Type: text/html; charset=UTF-8'); |
S'en suit ma page classique, côté client
Code:
1 2 3 4 5 6 7
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
<meta name="exemple" content="contenu exemple">
</head>
<body> |
' Mon code html, fonctionnel, aucun problème sur ce langage
Code:
1 2 3 4 5
| <font face="Geneva, Arial, sans-serif" size="0">
<?php echo '<a href="mycgi?foo=', urlencode($contents), '">' ?>
</font>
</body>
</html> |
Pour le problème 1/ j'ai l'impression que le code explode comprend tout ce qu'il y a entre les deux marqueurs, et donc la mise en forme du site source. Cela m'empêche donc de modifier l'output.
Une idée? P.e. qu'il est possible de passer par une autre fonction pour n'extraire que le texte, sans la mise en forme ou bien de supprimer des éléments dont les tags du site source définis tels <font>? Cette deuxième solution apporterait des fonctionnalités très pratiques pour éditer le résultat.
Ah oui et puis pour le size="0", aussi étrange que cela puisse paraitre cela permet quand même de réduire légèrement la taille du résultat...
Pour le problème 2/, il s'agit d'un problème de encode, mais les seules syntaxes que j'ai trouvées sur le net (j'en suis à un niveau utilisateur seulement), concernent le get_file_content et non le implode / explode. J'ai testé sans succès la fonction convert et des solutions de contournement du style str_replace, mais je n'arrive pas non plus à les appliquer.
Toute aide qui me permettrait d'avancer sur mon projet serait la bienvenue !:ccool:
Bonne journée (ou bon long WE pour ceux qui en ont la chance) ! +:P