Visualizzazione dei risultati da 1 a 8 su 8

Discussione: &$string

  1. #1

    &$string

    salve.

    ho da poco installato la la nuova versione di php, avevo ancora quella di 2 anni fa, e ho un codice che prima funzionava e adesso no.

    E' questo il codice:

    Codice PHP:

    $conn 
    mysql_connect($mysql_server$mysql_user$mysql_password);
    mysql_select_db($mysql_db);

    function 
    censored(&$string) {
        global 
    $conn;
        
    $q "SELECT * FROM censoredwords";
        
    $r mysql_query($q$conn);
        while (
    $row mysql_fetch_object($r)) {
            
    $string eregi_replace($row->writ$row->visu$string);
        }
    }

    $censored($b);

    $b "test test";

    print 
    $b
    alla fine non da nulla, nessun errore.
    E' cambiato qualcosa... quel "&" davanti a $string non va? Non so sinceramente a cosa serviva, so solo che funzionava cosi come scritto. Non sono un esperto in php.

    Grazie,
    Ciao.

  2. #2
    Ti consiglierei di leggere il manuale di PHP visto che ci sono alcuni errori di distrazione.

    Codice PHP:
    $conn mysql_connect($mysql_server$mysql_user$mysql_password);
    mysql_select_db($mysql_db);

    function 
    censored(&$string) {
        global 
    $conn;
        
    $q "SELECT * FROM censoredwords";
        
    $r mysql_query($q$conn);
        while (
    $row mysql_fetch_object($r)) {
            
    $string eregi_replace($row->writ$row->visu$string);
        }
    }

    $b "test test";

    censored(&$b);

    print 
    $b

  3. #3
    ti riferisci che ho sbagliato a mettere $ davanti a censored? il codice non è cosi, ho copiato qui sul forum sbagliato. Comunque non funziona neanche con censored(&$b);

    la variabile $b io la ho in un _POST, viene mandato da un INPUT in html, poi la funzione censored dovrebbe verificare se ci sono determinate parole, e sostituirle con $row->visu... non so se mi spiego bene...

    prima di print $b, avevo censored($b); o $b = censored($b), ma adesso nessuna funziona piu. Non so neanche dove guardare sul manuale...

  4. #4
    GUarda bene, la variabile tu l'avevi inizializzata dopo.

    E in più avevi tratto censored come una variabile e non come funzione.

  5. #5
    allora, censored() come variabile ho solo copiato male qui, sul forum! prima c'è la variabile , poi c'è la funzione poi print. il mio codice php originale, come ho gia detto è diverso, viene da un form, con _POST[]. sono certo che prima andava benissimo, forse quella & prima della variabile ha cambiato qualcosa cone la versione nuova di php.

    se metto cosi censored(&$b); mi da questo errore:


    Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of censored(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    infatti è così.. dal php 5 si tende a sconsigliare l' utilizzo di variabili passate per riferimento.

    per riferimento significa che viene presa in considerazione quella determinata variabile e la si modifica restituendola (detta in parole povere) 'sovrascritta'.

    uno stupidissimo esempio ma molto chiaro:
    Codice PHP:
    <?php


    function somma(&$numero)// la & danti alla variabile rappresenta un riferimento
      
    {
      
    $numero=$numero+3;
      }

    $pippo=5;
    echo 
    'pippo è '.$pippo.'
    '
    // restituisce 5


    somma($pippo);
    echo 
    'pippo ora è '.$pippo.'
    '
    // restituisce 8

    echo "


    "
    ;

    $pippo=5;
    echo 
    'pippo è '.$pippo.'
    '
    // restituisce 5

    function somma2($numero)// passaggio tradizionale della variabile
      
    {
      return 
    $numero=$numero+3;
      }

    $pippo=somma2($pippo);
    echo 
    'pippo ora è '.$pippo.'
    '
    // restituisce 8

    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    A me da 5 e 8 e anche dopo lo stesso 5 e 8 anziche 5 come hai detto... non capisco... Quindi il mio codice che prendeva dal database le parole non lo posso piu usare? Non ci sono alternative a quella dove io scrivo riga per riga ...eregi_replace... ?



    Originariamente inviato da dottwatson
    infatti è così.. dal php 5 si tende a sconsigliare l' utilizzo di variabili passate per riferimento.

    per riferimento significa che viene presa in considerazione quella determinata variabile e la si modifica restituendola (detta in parole povere) 'sovrascritta'.

    uno stupidissimo esempio ma molto chiaro:
    Codice PHP:
    <?php


    function somma(&$numero)// la & danti alla variabile rappresenta un riferimento
      
    {
      
    $numero=$numero+3;
      }

    $pippo=5;
    echo 
    'pippo è '.$pippo.'
    '
    // restituisce 5


    somma($pippo);
    echo 
    'pippo ora è '.$pippo.'
    '
    // restituisce 8

    echo "


    "
    ;

    $pippo=5;
    echo 
    'pippo è '.$pippo.'
    '
    // restituisce 5

    function somma2($numero)// passaggio tradizionale della variabile
      
    {
      return 
    $numero=$numero+3;
      }

    $pippo=somma2($pippo);
    echo 
    'pippo ora è '.$pippo.'
    '
    // restituisce 8

    ?>

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    è un warning...

    Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of censored(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\
    quindi in sostanza NON produce alterazioni alla corretta esecuzione del codice... genera solo un messaggio di avvertimento..

    hai per caso riscontrato anomalie nell' esecuzione del codice (apparte quel messaggio)?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.