10

文字列があるとしましょう:何か

JSでエスケープすると、次のようになります:%73%6F%6D%65%74%68%69%6E%67

したがって、JS でこのコードを使用してデコードできます。

 document.write(unescape('%73%6F%6D%65%74%68%69%6E%67'));

同じことを行うPHPのエスケープ関数が必要です(何かをエンコードします:%73%6F%6D%65%74%68%69%6E%67

どうやってするか ?

4

3 に答える 3

5
rawurldecode('%73%6F%6D%65%74%68%69%6E%67');
于 2014-06-21T21:40:34.190 に答える
2

最初にいくつかの説明:

文字列があるとしましょう: 何か
JS でエスケープすると、次のようになります: %73%6F%6D%65%74%68%69%6E%67

それは違う。(ちなみに、JSescape()関数は非推奨です。encodeURIComponent()代わりに使用する必要があります!)

したがって、JS でこのコードを使用してデコードできます。

はい、これはドキュメントに「何か」を書き込みます(escape()unescape()非推奨です。decodeURIComponent()代わりに使用してください)。


あなたの質問に:

何か%73%6F%6D%65%74%68%69%6E%67に [snip] エンコードする PHP の [snip] 関数が必要です

探しているのは、文字の 16 進数表現です。したがって、文字列"something"から文字列"%73%6F%6D%65%74%68%69%6E%67"を取得するには、次のものが必要です。

<?php
function stringToHex($string) {
    $hexString = '';
    for ($i=0; $i < strlen($string); $i++) {
        $hexString .= '%' . bin2hex($string[$i]);
    }
    return $hexString;
}

$hexString = stringToHex('something');
echo strtoupper($hexString); // %73%6F%6D%65%74%68%69%6E%67

後方:

function hexToString($hexString) {
    return pack("H*" , str_replace('%', '', $hexString));
}

$string = hexToString('%73%6F%6D%65%74%68%69%6E%67');
echo $string; // something
于 2013-03-20T22:00:27.297 に答える