假设我有一个字符串:something
当我在 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)
怎么做 ?
假设我有一个字符串:something
当我在 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)
怎么做 ?
PHP:
rawurlencode("your funky string");
JS:
decodeURIComponent('你的%20funky%20string');
不要使用escape
,因为它已被弃用。
rawurldecode('%73%6F%6D%65%74%68%69%6E%67');
首先澄清一下:
假设我有一个字符串:something
当我在 JS 中转义它时,我得到这个:%73%6F%6D%65%74%68%69%6E%67
那是错误的。(顺便说一句,JSescape()
函数已被弃用。您应该encodeURIComponent()
改用!)
所以我可以在JS中使用这段代码来解码它: document.write(unescape('%73%6F%6D%65%74%68%69%6E%67'));
是的,这将在文档中写入“某些东西”(因为escape()
, 也unescape()
已弃用;请decodeURIComponent()
改用)。
对于你的问题:
我需要 PHP 中的 [snip] 函数,它 [snip]将某些内容编码为%73%6F%6D%65%74%68%69%6E%67
您正在寻找的是字符的十六进制表示。因此,要从字符串"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