Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确编码URL?_Php_Url - Fatal编程技术网

Php 如何正确编码URL?

Php 如何正确编码URL?,php,url,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进行编码,而不使用likerawurlencodeencode~@#$&*()=:/,;?+' $url = 'https://www.google.com.hk/search?q=%2520你好'; echo preg_re

我想像浏览器那样编码

比如说<代码>https://www.google.com.hk/search?q=%2520你好

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

我正在使用下面的正则表达式对URI进行编码,而不使用like
rawurlencode
encode
~@#$&*()=:/,;?+'

$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,这就是问题所在,请注意,
q=%2520%
不是
?q=%252520%
还有,
urlencode
encode
&
%26
,所以会打断所有查询字符串,这就是我需要排除
~@#$&*()=:/,;?+'它不提供额外的25。编码这个你好 给出2520%E4%BD%A0%E5%A5%BD.%25表示%。你认为它会增加一个25,但它不会,但如果你在浏览器中键入该URL,翻译后的URL就没有额外的25了,这能称为答案吗?我想要一个函数来编码任何键入的URL,怎么样