JS enscape in PHP zurück wandeln?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JS enscape in PHP zurück wandeln?

    Hallo,

    ich bekomm per Javascript kyrillischen Text an eine PHP-Datei. Der Text wurde in JS mit escape()-Funktion umgewandelt -> Ergebnis:
    Code:
    %u0420%u0435%u0439%u0441 %u0438%u0437
    Wie kann ich den Text wieder in lesbaren kyrillischen Text umwandeln.

    urldecode() geht nicht!

    Danke

  • #2
    Damit gehts...
    PHP-Code:
        public function str_utf8RawUrlDecode($strSource) {
            
    $decodedStr '';
            
    $intPos 0;
            
    $intLength strlen ($strSource);
            
            while (
    $intPos $intLength) {
                
    $charAt substr ($strSource$intPos1);
                if (
    $charAt == '%') {
                    
    $intPos++;
                    
    $charAt substr ($strSource$intPos1);
                    if (
    $charAt == 'u') {
                        
    // we got a unicode character
                        
    $intPos++;
                        
    $unicodeHexVal substr ($strSource$intPos4);
                        
    $unicode hexdec ($unicodeHexVal);
                        
    $entity "&#"$unicode ';';
                        
    $decodedStr .= utf8_encode ($entity);
                        
    $intPos += 4;
                    }
                    else {
                        
    // we have an escaped ascii character
                        
    $hexVal substr ($strSource$intPos2);
                        
    $decodedStr .= chr (hexdec ($hexVal));
                        
    $intPos += 2;
                    }
                }
                else {
                    
    $decodedStr .= $charAt;
                    
    $intPos++;
                }
            }        
            return 
    $decodedStr;
        } 

    Kommentar


    • #3
      Aus dem PHP-Handbuch:

      PHP-Code:
      function utf8_urldecode($str) {
          
      $str preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
          return 
      html_entity_decode($str,null,'UTF-8');;

      PHP-Code:
      echo utf8_urldecode("℅u0420℅u0435℅u0439℅u0441 ℅u0438℅u0437");
      // Рейс из 

      [COLOR="DimGray"]Anmerkung:

      Das %-Zeichen hab ich hier durch ℅ ersetzt, weil sonst das Forum die Zeichen automatisch umwandelt.[/COLOR]
      Zuletzt geändert von h3ll; 08.01.2010, 19:15.

      Kommentar

      Lädt...
      X