请问如何将下面一段 C 语言代码转换成 PHP

2016-01-01 21:17:04 +08:00
 ZiShuo

function urlencode()
{
local string="$1";
local strlen=${#string};
local encoded="";

for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}";
done
echo "${encoded}";
}

以上是 C 语言的经过编码后的特殊符号内容是小写的, PHP 的 urlencode 编码后特殊字符串是大小的,那个变态的网站对特殊字符 url 地址大小写非常敏感。请大神帮忙转换一下。

4147 次点击
所在节点    PHP
26 条回复
ZiShuo
2016-01-02 22:01:15 +08:00
@Kilerd 表示真不是伸手党,为了解决这个问题我搞了一天了。
ZiShuo
2016-01-02 22:02:33 +08:00
@EmarsXHY 请问哪里不是人话了?语言没搞清楚我承认是我弄错了。
ZiShuo
2016-01-02 22:06:01 +08:00
@vigoss 你这样会将所有的大小写字符转换成小写,而我只是需要将特殊的字符转换成小写,比如:

HTTP://编码后是 HTTP%3A%2F%2F ,而我需要的是 HTTP%3a%2f%2f,其它不变。
iyeatse
2016-01-02 22:26:53 +08:00
@ZiShuo 没写过 php ,不过这个不是一个正则替换就能解决的事?
nmgwddj
2016-01-02 23:14:15 +08:00
@HanSonJ 我还在想 C 语言什么时候可以直接给一个变量赋值字符串了。
pine
2016-01-08 09:58:30 +08:00
@ZiShuo 说人话就是,你打的字让人不懂你到底想干嘛,你仔细看看你发的帖子,如果 http 不符合你的要求,你的要求是什么?而且专门处理 http 不复杂啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/247712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX