Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Uso di addslashes()

  1. #1

    Uso di addslashes()

    Salve a tutti,
    sto lavorando ad uno script di php e mi sono accorto che spesso non riesco ad inserire i record nel db (my_sql) per via della famosa questione degli apostrofi, che invalidano le query.... a tale proposito mi sono ricordato della funzione addslashes() che dovrebbe aggiungere automaticamente dei segni di escape.

    ora il mio problema è il seguente:

    cerco un modo per applicare, in un'unico ciclo, la funzione ad un array $_POST, mantenendo invariate le chiavi associative dell'array

    esempio:
    codice:
    $frutta = array ( "fr1"=> "il melone",
    		  "fr2"=> "l'arancia",
    		  "fr3"=> "l'albicocca",
    		  "fr4"=> "il \"kiwi\"");
    
    
    foreach ($frutta as $frutto) 
      {
       addslashes($frutto);
       // non succede niente				 	
      }
    
    
    foreach ($frutta as $frutto) 
      {
       $frutto = addslashes($frutto);
       // $frutto cambia, frutta rimane invariato...	 	
      }
    
    
    foreach ($frutta as $frutto) 
      {
       $frutta[] = addslashes($frutto); 	
       // produce il seguente output:
      }
    
    Array
    (
        [fr1] => il melone
        [fr2] => l'arancia
        [fr3] => l'albicocca
        [fr4] => il "kiwi"
        [0] => il melone
        [1] => l\'arancia
        [2] => l\'albicocca
        [3] => il \"kiwi\"
    )
    
    
    //mentre io vorrei un output tipo
    
    
    Array
    (
        [fr1] => il melone
        [fr2] => l\'arancia
        [fr3] => l\'albicocca
        [fr4] => il \"kiwi\"
    )
    Avreste qualche idea per svolgere questa operazione sensa genereare nuovi elementi dell'array [0],[1],[2],ecc mantentedo invariate le chiavi associative dell'array...


    PS: aggiungo che nel mio caso l'array $_POST è abbastanza grosso e viene impiegato nelle query su tutte le tabelle; quindi modificare manualmente ogni singola sottovariabile dell'array non è una soluzione economica...

    Ringrazio in anticipo per l'attenzione,
    Buon 2005
    _Andrea

  2. #2
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252
    dal manuale di php per la funzione stripslashes:
    Codice PHP:
    <?php
    function stripslashes_deep($value)
    {
       
    $value is_array($value) ?
                   
    array_map('stripslashes_deep'$value) :
                   
    stripslashes($value);

       return 
    $value;
    }

    // Example
    $array = array("f\\'oo""b\\'ar", array("fo\\'o""b\\'ar"));
    $array stripslashes_deep($array);

    // Output
    print_r($array);
    ?>
    basta che cambi stripslashes con addslashes.

  3. #3
    molto brutalmente:
    codice:
    foreach($array as $k => $v)
        $array[$k]=addslashes($v);
    più fine:
    attiva magic quotes gpc nel php.ini

  4. #4
    Funzionare funziona...(l'ho eseguito), ora tocca capire che fa arraymap(). la funzione è per me un po' "esoterica"; quando la capisco ri-posto qui. Intanto ti ringrazio vivamente della dritta!

    Ciao!
    _And

  5. #5
    Alla fine ho optato per il suggerimento tuttaltro che "brutale" di eyescream: mi sembra semplice e diretto,

    Dunque ancora grazie a entrambi

  6. #6
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252
    [EDIT]
    Se in $_POST hai degli array non so se funziona perché tenteresti di applicare addslashes ad un array...
    [/EDIT]

    http://php.it/array_map

    array_map -- Applies the callback to the elements of the given arrays

    praticamente è tipo una funzione ricorsiva.

    se $value è un array allora riapplica la funzione all'array, se $value non è un array ritorna addslashes($valore)

    è come se l'array fosse un albero ed i valori dell'array fossero i nodi terminali. passa tutti i sottorami dell'albero e quando trova una foglia(nodo terminale) gli applica la funzione.
    Serve soprattutto se hai array dentro array...

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.