Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    inserimento stringhe con apostrofi in array

    Creo dinamicamente un array in javascritp con i valori che ho sul database. Quest'operazione di inserimento elementi avviene tramite il php. Il problema è che quando inserisco una stringa con apostrofi, ad es. A_accentatA' genera l'errore:
    Unterminated string literal
    Ho provato a fare l'escape tramite l'istruzione addslashes del linguaggio php, ma non funziona.... come si risolve?????
    Thx!!

    var arItems = new Array()
    arItems = [
    ['1','1','azienda 1 categ A'],['1','26','A_accentatA'']
    ]

    <script>
    var arItems = new Array()
    arItems = [
    <?
    $cmd = "SELECT * FROM $table_aziende";
    $rs = mysql_query($cmd);

    $tot=mysql_num_rows($rs);
    $cont=1;
    if (ini_get('magic_quotes_gpc') == 0)
    $slash="y";

    while($aItems = mysql_fetch_array($rs)){
    $label=$aItems['label'];
    if ($slash == "y")
    $label=addslashes($label);

    if ($cont==$tot){
    echo "['".$aItems['id_categoria']."','" .$aItems['id']."','".$label."']";
    }else{
    echo "['".$aItems['id_categoria']."','" .$aItems['id']."','".$label."'],";
    }
    $cont++;
    }
    ?>
    ]
    </script>

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    devi fare il replace degli apici ' con backslash-apice \'
    addslashes cosa fa di preciso?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    fa la stessa cosa in php...xò qua non mi funziona

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    sapresti suggerirmi una sintassi da applicare a quelllo script....thx

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    mmm addslashes non la conoscevo ma funziona a dovere.
    Stavo per suggerirti di usare str_replace
    codice:
    $label=str_replace("'","\'",$label);
    però secondo me il problema sta nel fatto che addslashes la usi solo quando $slash=="y"
    devi usarla sempre

    un'altra soluzione alternativa è quella di usare le virgolette come delimitatori degli elementi dell'array javascript
    codice:
    echo "[\"".$aItems['id_categoria']."\",\"" .$aItems['id']."\",\"".$label."\"]";
    per se hai le virgolette all'interno delle variabili hai lo stesso problema, quindi fa il replace ogni volta e sei apposto

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    Grazie!!! Cmq ho risolto inserendo solo l'istruzione

    $label=str_replace("'","\'",$label);

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.