Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2006, 21h18   #1
Invité régulier
 
Inscription : mars 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 23
Points : 7
Points : 7
Envoyer un message via MSN à Ronan.f Envoyer un message via Skype™ à Ronan.f
Par défaut RSS et charset ?

Bonjour a tous !

J'ai un soucis , j ai un formulaire qui retourne le RSS de google pour les mot clefs entrés dans le formulaire :

exemple :

formulaire :
http://upload56.free.fr/RSS/formu.php

recherche sur les mots grippe : http://upload56.free.fr/RSS/page.php?recherche_texte=grippe&submit=Rechercher

Cela retourne le RSS de google news pour le mot Grippe, cela fonctionne , mais j'ai un problème avec les caractères accentués !

Quel solution ? Peut être de charset ?


Merci , Ronan

Edit code de page.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
</head>
<?php
$recherche = $_GET['recherche_texte'];
//Initation des variables
$rechercher = " ";
$remplacer = "+";
$expression = str_replace($rechercher, $remplacer, $recherche);
$url_google = "http://news.google.fr/news?hl=fr&ned=fr&q=$expression&ie=UTF-8&output=rss";
$fp = @fopen($url_google,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);
 
if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
 $items = explode("<item>", $rawitems[0]);
 
 for( $i = 0; $i < count($items)-1; $i++ ) {
  eregi("<title>(.*)</title>",$items[$i+1], $title );
  eregi("<link>(.*)</link>",$items[$i+1], $url );
  eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
  echo "<li><a href='".$url[1]."'>".$title[1]."</a> - ".$cat[1];
 }
}
?>
</body>
</html>
Ronan.f est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 21h50   #2
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
salut,
en fait tu as deux problèmes : les caractères html ainsi que le charset.

pour les caractères html, un str_replace ira largement
pour le charset, essaies avec
Code :
http://news.google.fr/news?hl=fr&ned=fr&q=$expression&ie=ISO-8859-15&output=rss
le iso-8859-15 prend en compte le symbole euro contrairement au 8859-1 et
Code :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
au début du code
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2006, 20h23   #3
Invité régulier
 
Inscription : mars 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 23
Points : 7
Points : 7
Envoyer un message via MSN à Ronan.f Envoyer un message via Skype™ à Ronan.f
Alors voila le code que j'ai fait pour convertir dans le bon charset :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
</head>
<body>
<?php
$recherche = $_GET['recherche_texte'];
//Initation des variables
$rechercher = " ";
$remplacer = "+";
$expression = str_replace($rechercher, $remplacer, $recherche);
$url_google = "http://news.google.fr/news?hl=fr&ned=fr&q=$expression&ie=UTF-8&output=rss";
$fp = @fopen($url_google,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);
if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
 $items = explode("<item>", $rawitems[0]);
  echo "<ul>";
  for( $i = 0; $i < count($items)-1; $i++ ) {
  eregi("<title>(.*)</title>",$items[$i+1], $title );
  eregi("<link>(.*)</link>",$items[$i+1], $url );
  eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
  $titre = html_entity_decode(utf8_decode(str_replace("\’", "\'", $title[1])));
  $autd = strrpos($titre, "-");
  $source = substr($titre, $autd+2);
  $titre =  substr($titre, '0', $autd);
  echo "<li><a href='".$url[1]."'>".$titre."</a> (".$source.")";
 }
  echo "</ul>";
}
?>
</body>
</html>
Mais ca bug encore pour quelques apostrophes !

Comme ici :

-http://upload56.free.fr/RSS/page.php?recherche_texte=dadvsi&submit=Rechercher
(billet AgoraVox)

-http://upload56.free.fr/RSS/page.php?recherche_texte=arbitre&submit=Rechercher
(billet El Watan)

Ca serait cool de savoir comment resoudre ce petit probleme

Merci , Ronan
Ronan.f est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h31.


 
 
 
 
Partenaires

Hébergement Web