文字列があるとしましょう:何か
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)
どうやってするか ?
文字列があるとしましょう:何か
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)
どうやってするか ?
rawurldecode('%73%6F%6D%65%74%68%69%6E%67');
最初にいくつかの説明:
文字列があるとしましょう: 何か
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