code为文本(PHP,语言) [英] Code to Text (PHP, languages)

查看:128
本文介绍了code为文本(PHP,语言)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我提交后与AJAX不是英语,我会得到类似于%u4F60%u662F%u5982%u4F55%u505A%uFF1F 的东西 我能做些什么来解决这个问题在PHP?我试过 utf8_de code 并不起作用。

When I submit a post with AJAX that is not in English, I will get something similar to %u4F60%u662F%u5982%u4F55%u505A%uFF1F What can I do to fix this in PHP? I've tried utf8_decode and doesn't work.

我提交使用AJAX的文字是否有帮助。

I'm submitting the text with AJAX if that helps.

推荐答案

这是否你想要做什么?

<?php

  function utf8_urldecode ($str) {
    return urldecode(preg_replace_callback('/%u([0-9A-F]{4,6})/i', function($matches) {
      $int = hexdec($matches[1]);
      switch (TRUE) {
        case $int < 0x80:
          return pack('C*', $int & 0x7F);
        case $int < 0x0800:
          return pack('C*', (($int & 0x07C0) >> 6) | 0xC0, ($int & 0x3F) | 0x80);
        case $int < 0x010000:
          return pack('C*', (($int & 0xF000) >> 12) | 0xE0, (($int & 0x0FC0) >> 6) | 0x80, ($int & 0x3F) | 0x80);
        case $int < 0x110000:
          return pack('C*', (($int & 0x1C0000) >> 18) | 0xF0, (($int & 0x03F000) >> 12) | 0x80, (($int & 0x0FC0) >> 6) | 0x80, ($int & 0x3F) | 0x80);
        default:
          return $matches[0];
      }
    }, $str));
  }

  $str = "%u4F60%u662F%u5982%u4F55%u505A%uFF1F";

  echo utf8_urldecode($str);

我从来没有尝试之前,十六进制UTF-8 code点转换为二进制,原来它其实很简单,当你得到你的头周围。当然,它可能仍然显示为无稽之谈在你的浏览器,这取决于人物居然是 - 你可能需要安装语言包为他们正确呈现

I have never tried to convert hex UTF-8 code points to binary before, turns out it's actually quite easy when you get your head around it. Of course, it may still display as nonsense in your browser, depending on what the characters actually are - you may need install a language pack for them to render correctly.

这篇关于code为文本(PHP,语言)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆