如何正确编码URL?

时间:2014-08-13 16:51:04

标签: php url

我想像浏览器那样进行编码,

例如。 https://www.google.com.hk/search?q=%2520你好

应编码为https://www.google.com.hk/search?q=%2520%E4%BD%A0%E5%A5%BD

我正在使用以下正则表达式来编码URI而不像rawurlencode编码~!@#$&*()=:/,;?+'

$url = 'https://www.google.com.hk/search?q=%2520你好';
echo preg_replace_callback("{[^0-9a-z_.!~*'();,/?:@&=+$#]}i", function ($m) {
    return sprintf('%%%02X', ord($m[0]));
}, $url);

但是这将返回https://www.google.com.hk/search?q=%252520%E4%BD%A0%E5%A5%BD,其中有25

如何在不修改原始地址的情况下正确编码用户输入的网址?

1 个答案:

答案 0 :(得分:1)

您可以将 urlencode 用于此目的。它会将%2520你好编码为%252520%E4%BD%A0%E5%A5%BD。请使用以下代码。

<?php
$url = 'https://www.google.com.hk/search?q=%2520'.urlencode("你好").'';
echo $url;
?>

我认为这会为您提供所需的网址