Php 如何正确编码URL?
我想像浏览器那样编码 比如说<代码>https://www.google.com.hk/search?q=%2520你好代码> 应编码为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%E4%BD%A0%E5%A5%BD
我正在使用下面的正则表达式对URI进行编码,而不使用likerawurlencode
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,怎么样