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 :

fwrite et str_replace [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut fwrite et str_replace
    Bonjour,
    J'utilise une fonction qui me permet de lire un fichier xml distant et de le réécrire en local.
    Par contre avant d'en faire un fichier local, j'aimerais pouvoir remplacer une chaine par une autre (str_replace).
    sauriez vous comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Files($url, $dest)
    {
    $source = fopen($url,'r');
    $destination=fopen($dest,'w');
    while ($a=fread($source,6000000))
    {
    fwrite($destination,$a);  
    }
    fclose($source);
    fclose($destination); 
    }
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ou est ton str_replace() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    bah justement,
    j'ai essayé un peux partout ou cela me semblait logique mais sans résultat.
    c'est pour cela que j'ai préféré mettre un script qui fonctione

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    montre ce que tu as essayé et on pourra peut etre te dire pourquoi ca ne fonctionne pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    alors, et on ne rigole pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Files($url, $dest)
    {
    $source = fopen(str_replace('toto', 'tata',$url),'r');
    $destination=fopen($dest,'w');
    while ($a=fread($source,6000000))
    {
    fwrite($destination,$a);  
    }
    fclose($source);
    fclose($destination); 
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function Files($url, $dest)
    {
    $source = fopen($url,'r');
    $source = str_replace('toto', 'tata',$source) ;
    $destination=fopen($dest,'w');
    while ($a=fread($source,6000000))
    {
    fwrite($destination,$a);  
    }
    fclose($source);
    fclose($destination); 
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Files($url, $dest)
    {
    $source = fopen($url,'r');
    $destination=fopen($dest,'w');
    while ($a=fread(str_replace('toto', 'tata', $source),6000000))
    {
    fwrite($destination,$a);  
    }
    fclose($source);
    fclose($destination); 
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Files($url, $dest)
    {
    $source = fopen($url,'r');
    $destination=fopen($dest,'w');
    while ($a=fread($source,6000000))
    {
    fwrite(str_replace('toto', 'tata', $destination),$a);  
    }
    fclose($source);
    fclose($destination); 
    }
    voici les messages d'erreur
    Warning: fread(): supplied argument is not a valid stream resource in /var/www/monsite/monfichier.php on line 12

    Warning: fclose(): supplied argument is not a valid stream resource in /var/www/monsite/monfichier.class.php on line 25

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    En tous les cas, si tu veux modifier le contenu du fichier lu, la dernière option me parait la seule viable. Enfin, presque. Il me semble que tu t'emmèles sacrément les pinceaux entre les flux de fichier et les chaines de caractère.

    Au final, ça devrait être ceci (plus ou moins):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function Files($url, $dest)
    {
        $source = fopen($url, 'r');
        $destination=fopen($dest, 'w');
     
        while ($a = fread($source, 6000000)) {
            fwrite($destination, str_replace('toto', 'tata', $a));  
        }
     
        fclose($destination);
        fclose($source);
    }
    Le message d'erreur vient du fait que tu tentes de passer une chaîne de caractère là où fwrite attend un flux de fichier.


    Note: avec file_get_contents, tu devrais t'en sortir plus facilement et surtout plus proprement. Pense aussi à prévoir le cas où l'ouverture de l'url échoue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $contents = file_get_contents($url);
    $contents = str_replace('toto', 'tata', $contents);
    file_put_contents($dest, $contents);
    Note2: d'ailleurs, certaines configurations de php n'autoriseront pas à ouvrir une URL distante de la sorte.

    EDIT: oh, pardon, file_put_contents n'existe pas sous PHP4.

  7. #7
    Membre averti
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Vérifiez que,le paramètre de configuration allow_url_fopen est bien on .

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo ini_get('allow_url_fopen');


    Si,c'est off (0),alors:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('allow_url_fopen',1);
    Sinon,vous pouvez,utiliser la fonction file_get_contents(),pour les fichiers distants.

  8. #8
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Oui avec file_get_contents c'est bien mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function Files($url, $dest) {
    $res=false;
    if(($data=@file_get_contents($url))!==false){
    	$data=str_replace('toto', 'tata', $data);
    	if(($handle=@fopen($dest,'w'))!==false){
    		$res=(@fwrite($handle,$data)!==false);
    		@fclose($handle);
    	}
     
    }
    return $res;
    }

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

Discussions similaires

  1. [Configuration] Probleme fwrite
    Par arround dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/10/2005, 22h43
  2. [RegEx] str_replace qui veut pas replacer
    Par lamoufle dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2005, 13h37
  3. Registre et fwrite
    Par xelec dans le forum C++
    Réponses: 11
    Dernier message: 13/03/2005, 00h49
  4. Questions sur fwrite
    Par Freakazoid dans le forum C++
    Réponses: 6
    Dernier message: 16/08/2004, 21h21
  5. fwrite et fread
    Par bohemianvirtual dans le forum C
    Réponses: 5
    Dernier message: 05/06/2002, 13h24

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