PHP等价的JavaScript逃逸/ UNESCAPE(PHP equivalent for ja

2019-07-22 05:35发布

比方说,我有一个字符串: 东西

当我在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)

怎么做 ?

Answer 1:

PHP:

rawurlencode("your funky string");

JS:

decodeURIComponent( '您%20funky%20string');

不要使用escape ,因为它已被弃用。



Answer 2:

rawurldecode('%73%6F%6D%65%74%68%69%6E%67');


Answer 3:

一些澄清第一:

比方说,我有一个字符串:东西
当我在JS逃避它,我得到这个:%73%6F%6D%65%74%68%69%6E 67%

这是错误的 。 (顺便说一句,在JS escape()函数已被弃用。您应该使用encodeURIComponent()代替!)

所以可以使用这个代码在JS进行解码:文件撰写(UNESCAPE( '%73%6F 6D%%65%74%68%69%6E%67'));

是的,这个会写“东西”的文件(如escape()unescape()已不再被使用decodeURIComponent()代替)。


你的问题:

我需要在PHP [剪断]函数[剪断]编码东西 %73%6F 6D%%65%74%68%69%6E%67

您要查找的是charachters的十六进制表示。 因此,要获得字符串“%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


文章来源: PHP equivalent for javascript escape/unescape