Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292

    funzione htmlentities personalizzata

    Ciao ragazzi,
    ho scaricato questa classe PHP che mi codifica tutti i caratteri in modo perfetto. L'unico problema è che se inserisco una stringa che ha uno /n non mi funziona più.

    Codice PHP:
    class HtmlEnc{
      static function 
    uniord($c) {
        
    $ud 0;
        if (
    ord($c{0}) >= && ord($c{0}) <= 127$ud ord($c{0});
        if (
    ord($c{0}) >= 192 && ord($c{0}) <= 223$ud = (ord($c{0})-192)*64 + (ord($c{1})-128);
        if (
    ord($c{0}) >= 224 && ord($c{0}) <= 239$ud = (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128);
        if (
    ord($c{0}) >= 240 && ord($c{0}) <= 247$ud = (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128);
        if (
    ord($c{0}) >= 248 && ord($c{0}) <= 251$ud = (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128);
        if (
    ord($c{0}) >= 252 && ord($c{0}) <= 253$ud = (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128);
        if (
    ord($c{0}) >= 254 && ord($c{0}) <= 255$ud false// error
        
    return $ud;
      }
      
      static function 
    toHtml($str){
          
    $html_str "";
          while (
    strlen($str) > 0) {
            
    preg_match("/^(.)(.*)$/u"$str$match);
            
    $test utf8_decode($match[1]);
            if (
    $test != "?"
              
    $html_str .= htmlentities(htmlentities($test));
            else if (
    strlen($match[1]) > 1)
              
    $html_str .= "&amp;#".self::uniord($match[1]).";";
            else 
              
    $html_str .= htmlentities(htmlentities($match[1]));
            
    $str $match[2];
          }
          return 
    html_entity_decode($html_str);
      }

    Esempio funzionante:

    Codice PHP:
    echo HtmlEnc::toHtml("ciao ’ pippo"); 
    Esempio non funzionante:

    Codice PHP:
    echo HtmlEnc::toHtml("ciao ’ 
    pippo"
    ); 
    Come posso risolvere? Secondo me ci sarà qualcosa che non va nelle espressioni regolari, ma non sono molto bravo con i regex :-(

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    up

  4. #4
    Per favore evita di spammare up, o il topic verra' chiuso.

    Per quanto riguarda il problema, non puoi semplicemente usare il charset utf8 invece di una funzione del genere?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    no perché apici come ’ e simili non vengono codificati correttamente

  6. #6
    Non hai capito. Intendo usare il charset utf-8 nella tua pagina, se usi quel charset correttamente non devi codificare nulla, utf-8 e' una codifica che puo' riprodurre qualunque code point del set Unicode.

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.