ホームページ  >  記事  >  バックエンド開発  >  この関数のどのような点が PHP の常識であり、その機能は何ですか?

この関数のどのような点が PHP の常識であり、その機能は何ですか?

WBOY
WBOYオリジナル
2016-06-13 13:07:12761ブラウズ

この関数は PHP の知識のどのような側面を表し、またその機能は何ですか?
Sajia は、私がこれまで経験したことのない次の機能を見つけました。
まず、PHP のどのような側面の知識が必要ですか?ファイル処理?それともバイナリ?
次に、最初から最後まで説明してください。なぜ 00XX、メモリコードを使用する必要があるのか​​。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->function js_unescape($str)    
{    
    $ret = '';    
    $len = strlen($str);    
    for ($i = 0; $i < $len; $i++)    
    {    
        if ($str[$i] == '%' && $str[$i+1] == 'u')    
        {    
            $val = hexdec(substr($str, $i+2, 4));    
            if ($val < 0x7f) $ret .= chr($val);    
            else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));    
            else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));    
            $i += 5;    
        }    
        else if ($str[$i] == '%')    
        {    
            $ret .= urldecode(substr($str, $i, 3));    
            $i += 2;    
        }    
        else $ret .= $str[$i];    
    }    
    return $ret;    
}  


------解決策------ -
デコード。unescape (js) の PHP バージョンとみなされます。
js のエスケープ メソッドは、文字列の内容、すべてのスペース、句読点、アクセント記号、および 他の非 ASCII 文字は、%xx エンコーディングで置き換えられます。xx は、文字を表す 16 進数と同じです。たとえば、スペースは "%20" を返します。255 を超える
文字値は、%uxxxx 形式で保存されます。
0x7f より大きいは漢字、上位ビットは 1、ビット単位の演算、コア演算は中国語の文字をデコードすることです
0x800 は理解できません、右に 6 ビットシフトすると何かが出てきますかどうかは別として、漢字のエンコード操作を詳しく説明できる専門家がいるか考えてみてください


------解決策------------------
ucs-2
4e2d
01001110 00101101

utf-8
e4b8ad
11100100 10101101


へ>あなた以来0x7f より大きいものは漢字であることを知っているのに、0x800 より小さいものは漢字ではないことをなぜ知らないのですか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。