Visualizzazione dei risultati da 1 a 10 su 10

Discussione: modificare file xml

  1. #1

    modificare file xml

    Ciao a tutti, avevo già chiesto qualcosa un po' di tempo fa per quanto riguarda la possibilità di "operare" sui file.

    ora però ho un problema in particolare che il seguente.

    ho un file che si chiama pippo.xml

    all'interno di questo file ci sono dei riferimenti a file che si trovano su Hard Disk utilizzati con windows e di conseguenza i loro percorsi sono settati come C:/cartella..

    siccome adesso devo utilizzare lo stesso file con MacOSx i percorsi dei file non corrispondono e di conseguenza i file non vengono trovati.

    quindi se possibile vorrei fare una cosa del genere:

    1 - leggere tutto il file pippo.xml
    2 - trovare tutte le parti di testo che contengono "C:/" e sostituirle con "/Users..."

    è una cosa possibile da fare oppure no?

    Grazie per l'aiuto e ciao a tutti!

    aquatimer2000

  2. #2
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Magari senza usare parser xml (sempre possibile) potresti anche effettuare dei replace direttamente sul file...non dovrebbe modificarne la struttura xml.


    Se ad esempio fai

    str_replace("C:/", "/Users/", $contenuto_file);

    ci sono problemi ?

  3. #3
    JHammer diciamo che forse ho capito quello che intendi dire.

    Dovresti però spiegarmi (se puoi visto che per quanto riguarda le operazioni sui file non ci capisco nulla) come ottieni la viariabile $contenuto_file.

    Ah.. nel caso ti fosse utilie per eventuli permessi sui file ti anticipo devo lavorare in locale.

    Grazie mille per l'aiuto!

    aquatimer2000

  4. #4
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    codice:
    // leggi
    $contenuto_file = get_file_contents($filename);
    
    // elabora il contenuto...ad esempio
    $contenuto_file = str_replace("C:/", "/Users/", $contenuto_file); 
    
    // riscrivi
    put_file_contents($filename, $contenuto_file);
    Nel Php4 put_file_contents e get_file_contents non sono implementate così devi scriverle te

    Questo è come ho fatto io

    codice:
    function get_file_contents($filename)
    {
      if(file_exists($filename))
      {
        if(is_readable($filename))
        {
          if($hfile = fopen($filename, "r"))
          {
           $content = fread($hfile, filesize($filename));
           fclose($hfile);
           return($content);
          }
        }
      }
      return(false);
    }
    
    function put_file_contents($filename, $content)
    {
      if($hfile = fopen($filename, "w"))
      {
         $res = fwrite($hfile, $content);
         fclose($hfile);
         return($res);
      }
     
      return(false);
    }

  5. #5
    altre 2 info:

    1 - $filename è la path del file che devo modificare o l'url?

    2 - la parte per leaborare il contenuto va subito dopo

    codice:
    }
      return(false);
    }
    ?!?

    aquatimer2000

  6. #6
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    $filename deve essere il nome del file (path/nome)
    Se il file si trova nella stessa cartella dello script sarà

    $filename = "nomefile.txt"

    Il return false l'ho inserito nelle funzioni per verificare problemi nelle operazioni di R/W.

  7. #7
    ho provato in quetso modo ma non ottengo nessun risultato:
    codice:
    <?
    $filename="pippo.txt";
    function get_file_contents($filename)
    {
      if(file_exists($filename))
      {
        if(is_readable($filename))
        {
          if($hfile = fopen($filename, "r"))
          {
           $content = fread($hfile, filesize($filename));
           fclose($hfile);
           return($content);
          }
        }
      }
      return(false);
    }
    
    $content = str_replace("C:/", "/Users/", $content);
    
    function put_file_contents($filename, $content)
    {
      if($hfile = fopen($filename, "w"))
      {
         $res = fwrite($hfile, $content);
         fclose($hfile);
         return($res);
      }
    
      return(false);
    }
    ?>
    Dove ho sbagliato? :master:

    nel file pippo.txt c'è scritto soltanto C:/
    aquatimer2000

  8. #8
    up

    niente ?!?
    aquatimer2000

  9. #9
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Ovvio!!! Non chiami le funzioni...e il codice interno alle funzioni non viene eseguito!!!

    Inserisci per comodità ed uso futuro il codice delle funzioni in un nuovo file e chiamalo ad es file.php

    Quindi sempre come esempio
    codice:
    <?php
    
    require ("file.php");
    $filename = "pippo.txt";
    put_file_contents($filename, str_replace("C:/", "/Users/", get_file_contents($filename)));
    
    ?>

  10. #10
    perfetto!! funziona alla grande!!

    come al solito sono un po'

    grazie mille per l'aiuto JHammer!

    aquatimer2000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.