PHP相当于javascript escape / unescape

时间:2013-03-20 21:03:43

标签: php javascript escaping

假设我有一个字符串:某事

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

怎么做?

3 个答案:

答案 0 :(得分:10)

<强> PHP:

rawurlencode("your funky string");

<强> JS:

  

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:2)

首先澄清一下:

  

假设我有一个字符串:某事   当我在JS中逃脱时,我得到这个:%73%6F%6D%65%74%68%69%6E%67

这是错误的。 (顺便说一句,不推荐使用JS escape()函数。您应该使用encodeURIComponent()代替!)

  

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

是的,这会将“something”写入文档(escape(),同时unescape()也已弃用;请改用decodeURIComponent()


问题:

  

我需要PHP中的[snip]函数[snip]编码某些东西%73%6F%6D%65%74%68%69%6E%67

你要找的是charachters的十六进制表示。因此,要从字符串“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