IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

RSS et charset ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    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 : 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
    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>

  2. #2
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    au début du code

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Par défaut
    Alors voila le code que j'ai fait pour convertir dans le bon charset :

    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
    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

Discussions similaires

  1. Flux rss et Charset
    Par PhoeniXX52 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2006, 16h08
  2. [Encodage] Charset et console Dos
    Par ToYonos dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/02/2005, 12h10
  3. Problème de charset
    Par Yodalf dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2004, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo