使随机字符串URL安全,并撤销任何使其安全的


PHP: make random string URL safe and undo whatever made it safe

给定一个随机生成的字符串,我如何将其转换为URL安全-然后"不转换"它?

PHP的bin2hex函数(参见:http://www.php.net/manual/en/function.bin2hex.php)似乎可以安全地将字符串转换为URL安全的字符。hex2bin函数(参见:http://www.php.net/manual/en/function.hex2bin.php)可能还没有准备好。以下自定义hex2bin函数有时会起作用:

function hex2bin($hexadecimal_data)
{
    $binary_representation = '';
    for ($i = 0; $i < strlen($hexadecimal_data); $i += 2)
    {
        $binary_representation .= chr(hexdec($hexadecimal_data{$i} . $hexadecimal_data{($i + 1)}));
    }
    return $binary_representation;
}

只有当函数的输入是有效的bin2hex字符串时才有效。如果我发送的东西不是bin2hex的结果,它就会死亡。我似乎无法让它在出错时抛出异常。

有什么建议吗?我不设置使用hex2bin/bin2hex。我所需要的是能够将随机字符串转换为URL安全字符串,然后反转该过程。

你要做的是URL编码/解码字符串:

$randomString = ...;
$urlSafe = urlencode($randomString);
$urlNotSafe = urldecode($urlSafe); // == $randomString

可以使用urlencode()/urldecode()