我想像浏览器那样进行编码,
例如。 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
。
如何在不修改原始地址的情况下正确编码用户输入的网址?
答案 0 :(得分:1)
您可以将 urlencode 用于此目的。它会将%2520你好
编码为%252520%E4%BD%A0%E5%A5%BD
。请使用以下代码。
<?php
$url = 'https://www.google.com.hk/search?q=%2520'.urlencode("你好").'';
echo $url;
?>
我认为这会为您提供所需的网址