我想像浏览器那样编码,
例如。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
。
如何在不修改原始地址的情况下正确编码用户输入的URL ?
您可以简单地使用urlencode来实现此目的。它将%2520你好
编码为%252520%E4%BD%A0%E5%A5%BD
。使用下面的代码:
<?php
$url = 'https://www.google.com.hk/search?q=%2520'.urlencode("你好").'';
echo $url;
?>
我想这会给你想要的url