Visualizzazione risultati 1 fino 3 di 3

Discussione: sostituzione di un testo in un'altro file

  1. #1
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito sostituzione di un testo in un'altro file

    Salve a Tutti,
    Vorrei un aiutino con un codice...

    In poche parole io ho 2 pagine, la prima (index.php) e la seconda (aggancio_db.php)

    io ho bisogno che all'esecuzione della pagina index questa sostituisca del testo (contenuto nella pagina stessa) in un determinato punto della pagina aggancio_db.php

    Vi allego il codice per farvi capire meglio

    File index.php
    Codice PHP:
    <!DOCTYPE>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    <title>scrivo file txt</title>

    </head>

    <body>
    <?php

    $stringa
    = "";
    $file = fopen("/var/www/html/pannello/prova_edit_file/aggancio_db.php", "r");
    $originale=fread($file, 10000);


    echo
    $originale;



    fclose($file);




    str_replace("RPCHOST", "localhost", $originale);

    str_replace('RPCID', 'root', $originale);

    str_replace('RPCPWD', 'password', $originale);



    $file1 = fopen("/var/www/html/pannello/prova_edit_file/aggancio_db.php", "w+");
    fwrite($file1,$originale);

    fclose($file1);




    ?>
    </body>
    </html>

    file aggancio_db.php
    Codice PHP:
    <?php

    $link
    = mysql_connect("RPCHOST", "RPCID", "RPCPWD")
    or die(
    'Could not connect: ' . mysql_error());
    mysql_select_db('account') or die('impossibile selezionare il database database');

    $strSQL_dati_ts = "SELECT * FROM dati";
    $risultato_dati_ts = mysql_query($strSQL_dati_ts);
    $numero_risultati_dati_ts = mysql_num_rows($risultato_dati_ts);

    $porta_ts3query=mysql_result($risultato_dati_ts,0,'porta_ts3query');
    $id_ts3query=mysql_result($risultato_dati_ts,0,'id_ts3query');
    $ip_ts3query=mysql_result($risultato_dati_ts,0,'ip_ts3query');
    $porta_ts3query=mysql_result($risultato_dati_ts,0,'porta_ts3query');


    echo
    "<br>".$porta_ts3query."<br>";
    echo
    "<br>".$id_ts3query."<br>";
    echo
    "<br>".$ip_ts3query."<br>";
    echo
    "<br>".$porta_ts3query."<br>";


    ?>
    come avrete già capito io ho la necessità che la pagina index.php sostituisca
    localhost a RPCHOST
    root a RPCID
    password a RPCPWD



    questi codici sopra riportati però contengono un errore da qualche parte perchè non riesco a farli funzionare...sapreste aiutarmi?

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il primo problema che salta agli occhi è che, dopo aver chiamato str_replace, ne ignori il risultato (e la funzione non opera in-place), quindi il codice dovrebbe essere qualcosa come:
    Codice PHP:
    $modifica = str_replace("RPCHOST", "localhost", $originale);
    $modifica = str_replace('RPCID', 'root', $modifica);
    $modifica = str_replace('RPCPWD', 'password', $modifica);
    o, in maniera più compatta:
    Codice PHP:
    $modifica = str_replace(array("RPCHOST", "RPCID", "RPCWD"), array("localhost", "root", "password"), $originale);
    usando poi $modifica nella scrittura su file anziché originale.

    Poi, qualche osservazione più generale:
    • per leggere il contenuto del file in una stringa, puoi usare file_get_contents, per scrivere una stringa in un file, puoi usarel file_put_contents (molto meglio che chiamare "a mano" fopen, fread, fwrite, fclose, di cui dovresti controllare i valori di ritorno...)
    • riguardo ad aggancio_db.php, le funzioni mysql_* sono deprecate, andrebbero sostituite con mysqli o PDO
    • anziché usare una pagina PHP per modificarne un'altra, non sarebbe più semplice far sì che aggancio_db.php legga i parametri di cui ha bisogno da un file di configurazione (ad esempio con parse_ini_file), cosicché in caso di modifiche sia possibile agire solo su quest'ultimo? Modificare del codice con una str_replace sembra azzardato !

  3. #3
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Il primo problema che salta agli occhi è che, dopo aver chiamato str_replace, ne ignori il risultato (e la funzione non opera in-place), quindi il codice dovrebbe essere qualcosa come:
    Codice PHP:
    $modifica = str_replace("RPCHOST", "localhost", $originale);
    $modifica = str_replace('RPCID', 'root', $modifica);
    $modifica = str_replace('RPCPWD', 'password', $modifica);
    o, in maniera più compatta:
    Codice PHP:
    $modifica = str_replace(array("RPCHOST", "RPCID", "RPCWD"), array("localhost", "root", "password"), $originale);
    usando poi $modifica nella scrittura su file anziché originale.

    Poi, qualche osservazione più generale:
    • per leggere il contenuto del file in una stringa, puoi usare file_get_contents, per scrivere una stringa in un file, puoi usarel file_put_contents (molto meglio che chiamare "a mano" fopen, fread, fwrite, fclose, di cui dovresti controllare i valori di ritorno...)
    • riguardo ad aggancio_db.php, le funzioni mysql_* sono deprecate, andrebbero sostituite con mysqli o PDO
    • anziché usare una pagina PHP per modificarne un'altra, non sarebbe più semplice far sì che aggancio_db.php legga i parametri di cui ha bisogno da un file di configurazione (ad esempio con parse_ini_file), cosicché in caso di modifiche sia possibile agire solo su quest'ultimo? Modificare del codice con una str_replace sembra azzardato !
    grazie mille

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •