Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    replace apostrifi problema db

    Salve a tutti, ho questa funzione per il replace dei caratteri di una stringa ma ho un problema:
    io ho bisogno che da una stringa del tipo "il mondo è grande" mi si trasformi in "il-mondo-e-grande".Ora la funzione va perche se scrivo l echo della variabile mi da il testo giusto, non va bene come la stringa viene salvat nel DB perche mi vengono salvate stringhe strane del tipo "è".Premetto che la pagina e in UTF8 mentre la tabella e campi in UTF8_general_ci.posto il codice
    Codice PHP:
    $nome_citta=stripslashes(htmlentities(htmlspecialchars($_POST['nome_citta'])));
    $nome_citta_seo make_url_friendly($nome_citta);
    echo 
    $prova;
    function 
    make_url_friendly($url) { 
        
    $url str_replace ("'""-"$url);
        
    $url str_replace('à','a'$url);
        
    $url str_replace ('è''e'$url); 
        
    $url str_replace ('ì''i'$url); 
        
    $url str_replace ('ò''o'$url); 
        
    $url str_replace ('ù''u'$url); 
        
    $find = array(' ''&''\r\n''\n''/''\\''+'); 
        
    $url str_replace ($find'-'$url); 
        
    $find = array(' ''é''è''ë''ê'); 
        
    $url str_replace ($find'e'$url);  
        
    $find = array(' ''ó''ò''ô''ö'); 
        
    $url str_replace ($find'o'$url); 
        
    $find = array(' ''á''à''â''ä'); 
        
    $url str_replace ($find'a'$url); 
        
    $url str_replace ('agrave;''a'$url); 
        
    $find = array(' ''í''ì''î''ï''ì'); 
        
    $url str_replace ($find'i'$url); 
        
    $find = array(' ''ú''ù''û''ü');  
        
    $url str_replace ($find'u'$url); 
        
    $find = array('/[^a-z0-9\-<>\.]/','/[\-]+/''/<[^>]*>/'); 
        
    $repl = array('''-'''); 
        
    $url =  preg_replace ($find$repl$url); 
        return 
    $url

    Qualcuno riescie ad aiutarmi a capire del perche il Db si comporti cosi?
    Grazie mille in anticipo.

  2. #2
    ciao,
    sia htmlentities che htmlspecialchars per default usano ISO-8859-1, quindi devi aggiungere due parametri, ad esempio: ENT_QUOTES, "UTF-8".
    http://it.php.net/manual/en/function...ecialchars.php

    Inoltre, anche la connessione al db deve essere utf8, quindi, prima di ogni query manda questa:
    SET NAMES 'utf8'

    Ciao
    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  3. #3
    Ciao Albertorrr ho provato cosi e funziona:
    Codice PHP:
    $nome_citta $POST['nome_citta'];
    $nome_citta htmlspecialchars($nome_cittaENT_QUOTES'UTF-8');
    $nome_citta addslashes($nome_citta);
    e poi la funzione 
    ora il browser me lo interpreta e sul database lo salva come dico io rimane solo un problema.Sul db salvo una versione modificata e una origina ad es:
    se scrivo "à è ì ò ù" mi salva nel campo A "a-e-i-o-u" e nel B "à è ì ò ù"
    Il problema e che nel campo B i valori finiscono cosi "à è ì ò ù", il browser li interpreta come giusti ma e giusto che finiscano cosi?
    grazie ancora..

  4. #4
    Prima di salvare, se fai un echo della variabile che deve finire in B si vede bene?
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  5. #5
    allora se faccio l eco mi scrive "a-e-i-o-u" ma le lettere accentate le scrive con coratteri strani..ecco il codice.
    Codice PHP:
    $nome_citta=$_POST['nuova_citta'];
    $nome_citta htmlspecialchars($nome_cittaENT_QUOTES);
    $nome_citta addslashes($nome_citta);

    $nome_citta=ucfirst($nome_citta);
    $url="$nome_citta";
        
    $url str_replace ("'""-"$url);
        
    $url str_replace('&agrave;','a'$url);
        
    $url str_replace ('&egrave;''e'$url); 
        
    $url str_replace ('&igrave;''i'$url); 
        
    $url str_replace ('&ograve;''o'$url); 
        
    $url str_replace ('&ugrave;''u'$url); 
        
    $find = array(' ''&''\r\n''\n''/''\\''+'); 
        
    $url str_replace ($find'-'$url); 
        
    $find = array(' ''é''è''ë''ê'); 
        
    $url str_replace ($find'e'$url);  
        
    $find = array(' ''ó''ò''ô''ö'); 
        
    $url str_replace ($find'o'$url); 
        
    $find = array(' ''á''à''â''ä'); 
        
    $url str_replace ($find'a'$url); 
        
    $url str_replace ('agrave;''a'$url); 
        
    $find = array(' ''í''ì''î''ï''&igrave;'); 
        
    $url str_replace ($find'i'$url); 
        
    $find = array(' ''ú''ù''û''ü');  
        
    $url str_replace ($find'u'$url); 
        
    $find = array('/[^a-z0-9\-<>\.]/','/[\-]+/''/<[^>]*>/'); 
        
    $repl = array('''-'''); 
        
    $url =  preg_replace ($find$repl$url); 

    echo
    "$url 
    "
    ;
    echo
    "$nome_citta 
    "


  6. #6
    Chiedevo un informazione, qualcuno conosce una qualche classe per trasformare un stringa in SEO friendly?

  7. #7
    hai salvato la pagina con encoding utf-8 senza BOM?
    Se stai scrivendo del codice HTML, hai messo:
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    nell'header?
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  8. #8
    Si messo..sono riuscito..ora ultimo problema..come posso gestire i caratteri greci per esempio?anche a livello di database parlo..ora con questi ultimi mi vede dei ???

  9. #9
    Da' un'occhiata al codice di questa pagina:
    http://www.unics.uni-hannover.de/nht...ilingual1.html
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  10. #10
    Domanda..può essere che non li vedo perché nel Mac ho installato solo la lingua italiana?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.