请问如何将下面一段 C 语言代码转换成 PHP - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZiShuo
V2EX    PHP

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

  •  
  •   ZiShuo 2016 年 1 月 1 日 4579 次点击
    这是一个创建于 3662 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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}&quo; ;;
    * ) printf -v o '%%%02x' "'$c"
    esac
    encoded+="${o}";
    done
    echo "${encoded}";
    }

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

    26 条回复    2016-01-08 09:58:30 +08:00
    iamfredng
        1
    iamfredng  
       2016 年 1 月 1 日
    我反复看了下,总觉得这不是 C 语言。。。这是个 Bash 脚本吧。
    iamfredng
        2
    iamfredng  
       2016 年 1 月 1 日
    艹,真是个 Bash 脚本,难怪我脑内的 C 语言处理器无法解析这段代码。摔
    HanSonJ
        3
    HanSonJ  
       2016 年 1 月 1 日
    @iamfredng 我还一直在想 C 语言什么时候能够 local 定义变量了。。。
    liuhaotian
        4
    liuhaotian  
       2016 年 1 月 1 日
    @HanSonJ 这是一个 function 类型的函数
    orvice
        5
    orvice  
       2016 年 1 月 1 日
    还以为是自己 c 语言白学了。。
    Kilerd
        6
    Kilerd  
       2016 年 1 月 1 日
    又是伸手党!!表示毫无好感。
    pynix
        7
    pynix  
       2016 年 1 月 1 日
    伸手党
    mikicomo
        8
    mikicomo  
       2016 年 1 月 1 日   1
    block
    gdtv
        9
    gdtv  
       2016 年 1 月 1 日
    php 就是从 C 语言来的,我学了 C 学了 PHP ,居然看不懂楼主的代码,这真的是 C 吗?我读书少,别骗我。
    MrZephyrus
        10
    MrZephyrus  
       2016 年 1 月 2 日
    @orvice + 1
    leveraging
        11
    leveraging  
       2016 年 1 月 2 日
    大家不要这么深恶意,我来帮楼主翻译。
    function php_urlencode($url) {
    return urlencode($url);
    }
    leveraging
        12
    leveraging  
       2016 年 1 月 2 日
    function php_urlencode($url) {
    return strtolower(urlencode($url));
    }
    EmarsXHY
        13
    EmarsXHY  
       2016 年 1 月 2 日
    。。。有点无语,第一语言没搞清楚,第二请说人话=。=
    580a388da131
        14
    580a388da131  
       2016 年 1 月 2 日
    看起来都是挺基本的东西。
    aprikyblue
        15
    aprikyblue  
       2016 年 1 月 2 日
    我 C 语言白学了
    czheo
        16
    czheo  
       2016 年 1 月 2 日
    我中文白学了
    47jm9ozp
        17
    47jm9ozp  
       2016 年 1 月 2 日
    我还以为是 c16 新标准哪来的那么多新用法……
    Cynic222
        18
    Cynic222  
       2016 年 1 月 2 日 via iPhone
    我还在想哪来的 esac...
    wizardforcel
        19
    wizardforcel  
       2016 年 1 月 2 日 via Android
    你需要 strtolower()
    ZiShuo
        20
    ZiShuo  
    OP
       2016 年 1 月 2 日
    @iamfredng 是的,是 Bash 语言,我一直认为 Bash 和 C 没区别。菜鸟勿怪!
    ZiShuo
        21
    ZiShuo  
    OP
       2016 年 1 月 2 日
    @Kilerd 表示真不是伸手党,为了解决这个问题我搞了一天了。
    ZiShuo
        22
    ZiShuo  
    OP
       2016 年 1 月 2 日
    @EmarsXHY 请问哪里不是人话了?语言没搞清楚我承认是我弄错了。
    ZiShuo
        23
    ZiShuo  
    OP
       2016 年 1 月 2 日
    @vigoss 你这样会将所有的大小写字符转换成小写,而我只是需要将特殊的字符转换成小写,比如:

    HTTP://编码后是 HTTP%3A%2F%2F ,而我需要的是 HTTP%3a%2f%2f,其它不变。
    iyeatse
        24
    iyeatse  
       2016 年 1 月 2 日
    @ZiShuo 没写过 php ,不过这个不是一个正则替换就能解决的事?
    nmgwddj
        25
    nmgwddj  
       2016 年 1 月 2 日
    @HanSonJ 我还在想 C 语言什么时候可以直接给一个变量赋值字符串了。
    pine
        26
    pine  
       2016 年 1 月 8 日
    @ZiShuo 说人话就是,你打的字让人不懂你到底想干嘛,你仔细看看你发的帖子,如果 http 不符合你的要求,你的要求是什么?而且专门处理 http 不复杂啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2723 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 03:50 PVG 11:50 LAX 19:50 JFK 22:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86