• User

    Replace singolo apice con backslash+apice

    Ciao a tutti, ho una stringa Javascript a cui dovrei sostituire i singoli apici con backslash+apice in modo che la stringa mi venga passata correttamente ad un file php. Il problema è che non riesco a sostituire questo apice singolo con nient'altro (non riesce ad identificare l'apice).

    Uso il seguente codice: replace(/'/g,"'");

    Ne ho provati tanti altri trovati nel web ma nessuno funziona. Non sono esperto di Javascript per questo chiedo aiuto 🙂 Il codice per intero è:

    <script>
    function translateText(response) {
    /////ADDED FOR AJAX
    var xmlHttpReq = false;
    if (window.XMLHttpRequest) {// Xhr per Mozilla/Safari/Ie7
    xmlHttpReq = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // per tutte le altre versioni di IE
    xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    strURL = "get_translation.php"+"?l=<? echo $l ?>&t=<? echo $p ?>&start=<? echo $start ?>&end=<? echo $end ?>&type=<? echo $type ?>&image=<? echo $image ?>&link=<? echo $link ?>&location=<? echo $location ?>&tt="+response.data.translations[0].translatedText.replace(/'/gi,"'");
    xmlHttpReq.open('GET', strURL, true);
    xmlHttpReq.setRequestHeader("Content-Type", "text/html");
    xmlHttpReq.onreadystatechange = function() {
    if (xmlHttpReq.readyState == 4) {
    responseText = xmlHttpReq.responseText;
    //updateStyle(responseText,OScatId);
    document.getElementById("<? echo $p.$l ?>").innerHTML += "<br>" + responseText;
    }
    }
    xmlHttpReq.send('');
    }
    //////END AJAX
    </script>

    Il testo che viene passato e troncato al primo apice è:

    Toutes les chambres ont été rénovées et équipées de tout le confort moderne pour rendre votre séjour mieux. La gestion familiale sera stupirper la courtoisie et l'efficacité. Maintenant disponible un service de navette de l'aéroport et la gare de Florence sur demande.


  • Super User

    Ciao Derbai,
    prova con questo:

    
    replace(/\'/g,'\\\'');
    
    

  • User

    No, non funziona ma il problema sembra essere l'apice che non viene riconosciuto. Come se le API di Google translate rispondessero con uncarattere differente anche se uguale visivamente all'apice.
    Ho optato per una azione più complessa: convertire la stringa in ASCII e poi riconvertirla da PHP.

    Grazie comunque. Ciao.


  • Super User

    @Derbai said:

    No, non funziona ma il problema sembra essere l'apice che non viene riconosciuto. Come se le API di Google translate rispondessero con uncarattere differente anche se uguale visivamente all'apice.
    Ho optato per una azione più complessa: convertire la stringa in ASCII e poi riconvertirla da PHP.

    Hai provato ad elaborare la stringa con la funzione urldecode() ?


  • User

    No, ormai ho risolto come scritto codificando la stringa in caratteri ASCII e poi decodificandola in php.
    Il codice ASCII del carattere è #39.

    Comunque grazie per il suggerimento, la prossima volta userò ulrdecode.

    Ciao Daniele