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

PHP & Base de données Discussion :

Utilisation de str_replace dans une chaine fgets [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 29
    Points : 29
    Points
    29
    Par défaut Utilisation de str_replace dans une chaine fgets
    Bonjour les programmeurs nocturnes

    Voila j'ai un flux XML sans balise item et j'utilise magpie comme librairie pour parser le flux seulement magpie à besoin des balise chanel et item pour fonctionner que ne possedent pas le flux.

    D'ou l'idée de créer un petit fichier PHP qui chargerait le flux et le modifierai à la volée dont voici le code

    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
     
    <?php 
     
    // decodeur de flux V 0.1 
     
    function open_external_url($url, $method = "curl") 
    { 
       $data = ''; 
       if(strtolower($method) == "curl") 
       { 
           $ch = curl_init($url); 
           ob_start(); 
           curl_exec($ch); 
           curl_close($ch); 
           $data = ob_get_contents(); 
           ob_end_clean(); 
       } 
       else if(strtolower($method) == "fopen") 
       { 
           $file = fopen($url, "r"); 
           while(!feof($file)) { 
                $data.=str_replace("%<offre%", "<item", fgets($file, 4096)); 
     
     
           } 
           fclose ($file); 
       } 
       return $data; 
    } 
     
     
    $data = open_external_url("http://www.acto-recrutement.com/RECrss.xml", "fopen"); 
     
    echo $data; 
     
    ?>
    Malheureusement la fonction "str_replace" ne semble pas fonctionner ici et je ne comprend pas pourquoi si quelqu'un avait une idée.... je lui ferai un gros bisous.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par marciv
    Malheureusement la fonction "str_replace" ne semble pas fonctionner ici
    Qu'est-ce qui te fait dire ça ?

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    peut-être que tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo fgets($file, 4096): 
    echo str_replace("%<offre%", "<item", fgets($file, 4096));
    pour être sur que ça renvoit ce que tu veux.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 29
    Points : 29
    Points
    29
    Par défaut RE probleme str
    Merci pour vos réponses,

    Ce qui me fait dire ça c'est que le fichier initial à une source de type

    <root>
    <offre><site>sudouestjob</site>
    <Nom_Ese>Acto Recrutement</Nom_Ese>
    <Poste>technicien depannage</Poste>
    <Reference>techdepannage26102006</Reference>
    <Description>Importante soci&#233;t&#233; limougeaude implant&#233; sur tout le limousin recherche dans le cadre d un depart en retraite son technicein de depannage en chauffage/maintenance/plomberie/electrotechnique.
    <root>
    Et que lorsque je charge mon fichier php dans mon navigateur et que j'affiche la source il n'y à aucune différence avec le fichier initial alors que je m'attendait à ce que la balise <offre> devienne <item>.

    voici le fichier php en ligne si quelqu'un souhaite jeter un coup d'oeuil

    http://cherche-emploi.fr/admin/decoflux.php

    J'ai essayé de faire un echo directement comme tu me l'a conseillé trotter mais cela n'a rien changé au problème...

    Merci pour vos réponse si quelqu'un avait une idée

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Ce que je me demande c'est pourquoi tu recherches la chaine %<offre% alors que tu veux remplacer <offre
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  6. #6
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Citation Envoyé par FCYPBA
    Ce que je me demande c'est pourquoi tu recherches la chaine %<offre% alors que tu veux remplacer <offre
    +1

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 29
    Points : 29
    Points
    29
    Par défaut str mystere
    BAh en fait c'est pour que le mot offre qui est présent dans les balises ne soit lui pas remplacé
    en fait je pense que la syntaxe exacte si je veux remplacer <offre> et</offre> par <item> et </item> sans toucher au mot offre dans les balise serait plus exactement celle ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data.=str_replace("%offre>%", "item>", fgets($file, 4096));
    Mais c'était juste pour essayer le code je l'aurait adapté si cela fonctionnait aux autre balise qui ne me convenait pas.....

  8. #8
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Et pourquoi pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     str_replace("<offre>", "<offre><item>", fgets($file, 4096));
    ?

  9. #9
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Citation Envoyé par marciv
    BAh en fait c'est pour que le mot offre qui est présent dans les balises ne soit lui pas remplacé
    en fait je pense que la syntaxe exacte si je veux remplacer <offre> et</offre> par <item> et </item> sans toucher au mot offre dans les balise serait plus exactement celle ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data.=str_replace("%offre>%", "item>", fgets($file, 4096));
    Mais c'était juste pour essayer le code je l'aurait adapté si cela fonctionnait aux autre balise qui ne me convenait pas.....
    je penses que tu confonds beaucoup de choses, str_replace effectue un remplacement d'une chaine par une autre. Il n'existe pas au sein de cette fonction de caractères joker ( % ).

    Donc dans ton cas, si tu veux remplacer les balises offre par item, il faut effectuer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_replace('offre>','item>',fgets($file, 4096));
    Si tu veux quelque chose de plus raffiné, il faudra te pensher sur preg_replace()

    Bonne continuation
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 29
    Points : 29
    Points
    29
    Par défaut str replace
    Bravo

    Effectivement il ne digérait pas les %. C'était tout bête néanmoins cela m'à grave pris la tête.

    En effet sur php net leur exemple c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Génère : <body text='black'>
    echo $bodytag = str_replace("%body%", "black", "<body text='%body%'>");
    En lisant en diagonale je me suis mis le doigt dans l'oeil en pensant que % étaient des caractères joker comme dans les requetes SQL LIKE.

    Encore merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Est-il permis d'utiliser RIGHT dans une chaine sql ?
    Par beegees dans le forum Langage
    Réponses: 4
    Dernier message: 02/01/2010, 20h04
  2. Utiliser require dans une chaine Heredoc
    Par mikael2235 dans le forum Langage
    Réponses: 1
    Dernier message: 13/12/2009, 20h49
  3. Utiliser le résultat d'une chaine sql dans une autre
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/05/2009, 09h00
  4. Variable utilisée dans une chaine de caractères
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 13h46
  5. [XML] Lecture d'un XML avec fgets dans une chaine
    Par carreau dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/06/2008, 02h57

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