Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139

    Strani problemi con gli apostrofi

    Ciao a tutti,
    ho un problema con la certificazione (W3C) per alcuni apostrofi e, a volte, pure con certi accenti. In pratica nella pagina si vedono bene, ma evidentemente hanno qualcosa che non va...
    Cerco di spiegarmi bene:
    la pagina che mostra questi caratteri, richiama dei testi inseriti in un DB tramite un form.
    Ho usato la funzione ADDSLASHES() prima di inserirli e uso poi le funzioni STRIPSLASHES() e HTMLENTITIES() quando li voglio visualizzare.
    Nei form d'inserimento, però, ho notato che spesso vengono incollati dei testi provenienti da WORD o da OULTOOK o addirittura da pagine web. Quindi: se scrivo direttamente da tastiera sul form, non ho nessun tipo di problema, se invece copincollo delle stringhe, mi capita di vedere dei caratteri accentati che, al posto che essere così ....èàùì.... sono ...e'a'u'i'... e gli apostrofi appaiono leggermente più inclinati di quelli che ottengo scrivendo da tastiera.

    Premesso che non mi dispiacerebbe capire il perchè di questa cosa, per quanto riguarda i caratteri accentati posso rimediare utilizzando la funzione STR_REPLACE() su tutte e 4 le vocali (se poi ci fosse una funzione che mi risolve il problema tanto meglio...) ma non so proprio come fare con gli apostrofi, perchè non saprei come fare capire a MySQL qualè il carattere da sostituire....

    Grazie in anticipo.

  2. #2
    l'apostro piu' inclinato e' il backtick alt+96 ``

    html &#96 ; <--- senza lo spazio prima del ; altrimenti il browser lo traduce in &#96;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    str_replace() va bene per le vocali accentate solo che p.es.ad ò conviene sostituire
    & o g r a v e ; (senza spazi!) ecc...
    per gli apostrofi devi aggiungere \ (l'aiuola diventa l\'aiuola)
    ciao

  4. #4
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da piero.mac
    l'apostro piu' inclinato e' il backtick alt+96 ``

    html &#96 ; <--- senza lo spazio prima del ; altrimenti il browser lo traduce in &#96;
    Quindi devo scrivere così?
    Codice PHP:
    $varstr_replace ("`""' "$var); 

  5. #5
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da *pragma

    per gli apostrofi devi aggiungere \ (l'aiuola diventa l\'aiuola)
    ciao
    In che senso?
    Gli "slash" vengono già aggiunti dalla funzione ADDSLASHES(), no?

  6. #6
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Originariamente inviato da gordian
    In che senso?
    Gli "slash" vengono già aggiunti dalla funzione ADDSLASHES(), no?
    si hai ragione avevo letto male la tua richiesta ed inoltre, quando ho risposto, aveva risposto nel frattempo piero.mac, dandoti la risposta giusta.
    ciao

  7. #7
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Ho risolto!!!

    Mi sono creato questa funzione da utilizzare per ogni evenienza.
    Spero possa essere utile anche per qualcun'altro:

    Codice PHP:
    function convalida_w3c($valore)
      { 
       
    //per le normali conversioni in HTML e per togliere gli slash inseriti dalla fun. addslashes
       
    $valore stripslashes(htmlentities($valore));

       
    //per i caratteri accentati copincollati da word, outlook ecc
       
    $valorestr_replace("a’""&agrave;"$valore);
       
    $valorestr_replace("e’""&egrave;"$valore);
       
    $valorestr_replace("i’""&igrave;"$valore);
       
    $valorestr_replace("o’""&ograve;"$valore);
       
    $valorestr_replace("u’""&ugrave;"$valore);
       
    //per gli apici copincollati da word, outlook ecc
       
    $valorestr_replace("’""'"$valore); 
       
    $valorestr_replace("‘""'"$valore);
       
    //per le virgolette copincollate da word, outlook ecc
       
    $valorestr_replace("“""&quot;"$valore);
       
    $valorestr_replace("”""&quot;"$valore);
       
    //per le altre cose
       
    $valorestr_replace("–""-"$valore);
       
    $valorestr_replace("…""..."$valore);
       
    $valorestr_replace("……""......"$valore);
      
       return 
    $valore;
      } 
    Se ci sono altri caratteri che non ho incluso, magari segnalateli


  8. #8
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    per me sembra un ottimo lavoro.
    non ho capito la differenza in questo:
    $valore= str_replace("–", "-", $valore);
    cioè come ottieni il primo trattino
    ciao

  9. #9
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da *pragma
    per me sembra un ottimo lavoro.
    non ho capito la differenza in questo:
    $valore= str_replace("–", "-", $valore);
    cioè come ottieni il primo trattino
    ciao
    Si ottiene quando, in WORD, scrivi una parola, poi lasci uno spazio, poi fai il trattino alto, poi lasci un altro spazio e infine scrivi un'altra parola.
    Noterai che WORD, in automatico, allunga il trattino che, evidentemente, al W3C ... ... non piace

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.