首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与PHP中的JavaScript的encodeURIcomponent相当的是什么?

与PHP中的JavaScript的encodeURIcomponent相当的是什么?
EN

Stack Overflow用户
提问于 2009-11-14 21:37:29
回答 3查看 68K关注 0票数 97

在PHP中,什么等同于JavaScript的encodeURIcomponent函数?

EN

回答 3

Stack Overflow用户

发布于 2009-11-14 21:39:26

你试过urlencode吗?

票数 8
EN

Stack Overflow用户

发布于 2019-03-14 18:28:47

这段代码怎么样?

我对每一层进行了编码。

实际上,它与encodeURI不同,但您可以对主机名和"/“进行编码

代码语言:javascript
复制
function encodeURI($url) {
    if(__empty($url))return $url; 

    $res = preg_match('/.*:\/\/(.*?)\//',$url,$matches);
    if($res){

        // except host name
        $url_tmp = str_replace($matches[0],"",$url);

        // except query parameter
        $url_tmp_arr = explode("?",$url_tmp);

        // encode each tier
        $url_tear = explode("/", $url_tmp_arr[0]);
        foreach ($url_tear as $key => $tear){
            $url_tear[$key] = rawurlencode($tear);
        }

        $ret_url = $matches[0].implode('/',$url_tear);

        // encode query parameter
        if(count($url_tmp_arr) >= 2){
            $ret_url .= "?".$this->encodeURISub($url_tmp_arr[1]);
        }
        return $ret_url;
    }else{
        return $this->encodeURISub($url);
    }

}

/**
 * https://stackoverflow.com/questions/4929584/encodeuri-in-php/6059053
 */
function encodeURISub($url) {
    // http://php.net/manual/en/function.rawurlencode.php
    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI
    $unescaped = array(
    '%2D'=>'-','%5F'=>'_','%2E'=>'.','%21'=>'!', '%7E'=>'~',
    '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')'
            );
    $reserved = array(
            '%3B'=>';','%2C'=>',','%2F'=>'/','%3F'=>'?','%3A'=>':',
            '%40'=>'@','%26'=>'&','%3D'=>'=','%24'=>'$'
    );
    $score = array(
            '%23'=>'#'
    );
    return strtr(rawurlencode($url), array_merge($reserved,$unescaped,$score));

}
票数 1
EN

Stack Overflow用户

发布于 2009-11-14 21:56:04

http_build_query

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1734250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档