1.对接的一个 urlencode 规则是除了字符数字_三种,其他的全部转化为%后面跟两位的 16 进制数
2.urlencode 文档:字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+),不符合
3. 使用 rawurlencode(),-_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。
问题就是:将使用 rawurlencode()后没有转义的-和.替换为转义的%2D 和%2E
$a = '中国 de www 人.min-guo';
$b = rawurlencode($a);
str_replace('.','%2E',$b);
str_replace('-','%2D',$b);
$b = strtoupper($b);
echo $b;
输出的结果并没有替换:%E4%B8%AD%E5%9B%BDDE%20WWW%E4%BA%BA.MIN-GUO
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.