Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Unicode_decode uxxxx

  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    146

    Unicode_decode uxxxx

    Allora la stringa decodificata esce:
    °."°".diventa fan."°".° ©

    dovrebbe uscire
    °.•°•.★diventa fan★.•°•.° ©

    Ci deve essere qualche cosa che non va..

    magari mb_... boh

    Codice PHP:
    <?php

    function unicode_decode($str){
    return 
    preg_replace("#/u([0-9A-F]{4})#ie""hex2str(\"$1\")"$str);
    }

    function 
    hex2str($hex) {
        
    $r '';
        for (
    $i 2$i strlen($hex) - 1$i += 2){
            
    $r .= chr(hexdec($hex[$i] . $hex[$i 1]));
        }
        return 
    $r;
    }


    $text "Grazie mille per l'aiuto, \n\n\u00b0.\u2022\u00b0\u2022.\u2605diventa fan\u2605.\u2022\u00b0\u2022.\u00b0 \u00a9";
    $text str_replace("\u""/u"$text);
    $stringa_de_codificata unicode_decode($text);
    echo 
    $stringa_de_codificata;

    ?>
    (fatto con l'aiuto di dascos)

  2. #2
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    146
    risolto era più facile di quello che sembrava

    <?php

    function unicode_decode($str){

    echo preg_replace("#/u([0-9a-f]{3,4})#i","&#x\\1;",$str);

    }


    $text = "Grazie mille per l'aiuto, \n\n\u00b0.\u2022\u00b0\u2022.\u2605diventa fan\u2605.\u2022\u00b0\u2022.\u00b0 \u00a9";
    $text = str_replace("\u", "/u", $text);
    $stringa_de_codificata = unicode_decode($text);
    echo $stringa_de_codificata;

    ?>

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Ti chiedo scusa ma non avevo capito che tenevi i caratteri codificati nella stringa con la loro rappresentazione esadecimale preceduta da una sequenza di escape. Pensavo li rappresentassi così per far capire il carattere atteso.

    In effetti la soluzione che hai applicato è semplice ed efficace: cerchi la parte numerica dopo \u**** e la utilizzi come elemento della Entity HTML &#x****; (e questo funziona fin tanto che il charset del documento HTML è uguale alla codifica unicode utilizzata per gli escape). C'è un piccolo errore: nella funzione invochi una echo invece di ritornare il valore. In più mi sono permesso di modificare leggermente il pattern in modo da evitare l'utilizzo della funzione str_replace. Mi sono anche preso la libertà di cambiare il nome alla funzione (ma qui sento di essermi allargato troppo) poichè la funzione non decodifica nulla, ma a parità di codifica numerica, passa da un formato che utilizza l'escape a quello delle entità html.

    Codice PHP:
    <?php
    function EscUni2HTMLEntity($str){
        return 
    preg_replace("/\\\\\\\u([0-9a-f]{3,4})/i","&#x\\\\1;"$str);
    }

    $text "Grazie mille per l'aiuto, \n\n\\u00b0.\\u2022\\u00b0\\u2022.\\u2605diventa fan\\u2605.\\u2022\\u00b0\\u2022.\\u00b0 \\u00a9";
    echo 
    EscUni2HTMLEntity($text);
    ?>
    spero di esser stato utile anche se la soluzione era ormai evidente!
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  4. #4
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    146
    grazie figurati..


    era particolare il problema

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.