encodeURIcomponentPHPのJavaScriptの機能に相当するものは何ですか?
回答:
お試しくださいrawurlencode。またはもっと正確に言うと:
function encodeURIComponent($str) {
    $revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');
    return strtr(rawurlencode($str), $revert);
}この関数は、どのようencodeURIComponentに定義されているかを正確に機能します。
encodeURIComponent次を除くすべての文字をエスケープします:アルファベット、10進数、-_.!~*'()
function encodeURIComponent($ string){
   $ result = "";
   for($ i = 0; $ i <strlen($ string); $ i ++){
      $ result。= encodeURIComponentbycharacter(urlencode($ string [$ i]));
   }
   $ resultを返します。
}
function encodeURIComponentbycharacter($ char){
   if($ char == "+"){return "%20"; }
   if($ char == "%21"){return "!"; }
   if($ char == "%27"){return '"';}
   if($ char == "%28"){return "(";}
   if($ char == "%29"){return ")"; }
   if($ char == "%2A"){return "*"; }
   if($ char == "%7E"){return "〜"; }
   if($ char == "%80"){return "%E2%82%AC"; }
   if($ char == "%81"){return "%C2%81"; }
   if($ char == "%82"){return "%E2%80%9A"; }
   if($ char == "%83"){return "%C6%92"; }
   if($ char == "%84"){return "%E2%80%9E"; }
   if($ char == "%85"){return "%E2%80%A6"; }
   if($ char == "%86"){return "%E2%80%A0"; }
   if($ char == "%87"){return "%E2%80%A1"; }
   if($ char == "%88"){return "%CB%86"; }
   if($ char == "%89"){return "%E2%80%B0"; }
   if($ char == "%8A"){return "%C5%A0"; }
   if($ char == "%8B"){return "%E2%80%B9"; }
   if($ char == "%8C"){return "%C5%92"; }
   if($ char == "%8D"){return "%C2%8D"; }
   if($ char == "%8E"){return "%C5%BD"; }
   if($ char == "%8F"){return "%C2%8F"; }
   if($ char == "%90"){return "%C2%90"; }
   if($ char == "%91"){return "%E2%80%98"; }
   if($ char == "%92"){return "%E2%80%99"; }
   if($ char == "%93"){return "%E2%80%9C"; }
   if($ char == "%94"){return "%E2%80%9D"; }
   if($ char == "%95"){return "%E2%80%A2"; }
   if($ char == "%96"){return "%E2%80%93"; }
   if($ char == "%97"){return "%E2%80%94"; }
   if($ char == "%98"){return "%CB%9C"; }
   if($ char == "%99"){return "%E2%84%A2"; }
   if($ char == "%9A"){return "%C5%A1"; }
   if($ char == "%9B"){return "%E2%80%BA"; }
   if($ char == "%9C"){return "%C5%93"; }
   if($ char == "%9D"){return "%C2%9D"; }
   if($ char == "%9E"){return "%C5%BE"; }
   if($ char == "%9F"){return "%C5%B8"; }
   if($ char == "%A0"){return "%C2%A0"; }
   if($ char == "%A1"){return "%C2%A1"; }
   if($ char == "%A2"){return "%C2%A2"; }
   if($ char == "%A3"){return "%C2%A3"; }
   if($ char == "%A4"){return "%C2%A4"; }
   if($ char == "%A5"){return "%C2%A5"; }
   if($ char == "%A6"){return "%C2%A6"; }
   if($ char == "%A7"){return "%C2%A7"; }
   if($ char == "%A8"){return "%C2%A8"; }
   if($ char == "%A9"){return "%C2%A9"; }
   if($ char == "%AA"){return "%C2%AA"; }
   if($ char == "%AB"){return "%C2%AB"; }
   if($ char == "%AC"){return "%C2%AC"; }
   if($ char == "%AD"){return "%C2%AD"; }
   if($ char == "%AE"){return "%C2%AE"; }
   if($ char == "%AF"){return "%C2%AF"; }
   if($ char == "%B0"){return "%C2%B0"; }
   if($ char == "%B1"){return "%C2%B1"; }
   if($ char == "%B2"){return "%C2%B2"; }
   if($ char == "%B3"){return "%C2%B3"; }
   if($ char == "%B4"){return "%C2%B4"; }
   if($ char == "%B5"){return "%C2%B5"; }
   if($ char == "%B6"){return "%C2%B6"; }
   if($ char == "%B7"){return "%C2%B7"; }
   if($ char == "%B8"){return "%C2%B8"; }
   if($ char == "%B9"){return "%C2%B9"; }
   if($ char == "%BA"){return "%C2%BA"; }
   if($ char == "%BB"){return "%C2%BB"; }
   if($ char == "%BC"){return "%C2%BC"; }
   if($ char == "%BD"){return "%C2%BD"; }
   if($ char == "%BE"){return "%C2%BE"; }
   if($ char == "%BF"){return "%C2%BF"; }
   if($ char == "%C0"){return "%C3%80"; }
   if($ char == "%C1"){return "%C3%81"; }
   if($ char == "%C2"){return "%C3%82"; }
   if($ char == "%C3"){return "%C3%83"; }
   if($ char == "%C4"){return "%C3%84"; }
   if($ char == "%C5"){return "%C3%85"; }
   if($ char == "%C6"){return "%C3%86"; }
   if($ char == "%C7"){return "%C3%87"; }
   if($ char == "%C8"){return "%C3%88"; }
   if($ char == "%C9"){return "%C3%89"; }
   if($ char == "%CA"){return "%C3%8A"; }
   if($ char == "%CB"){return "%C3%8B"; }
   if($ char == "%CC"){return "%C3%8C"; }
   if($ char == "%CD"){return "%C3%8D"; }
   if($ char == "%CE"){return "%C3%8E"; }
   if($ char == "%CF"){return "%C3%8F"; }
   if($ char == "%D0"){return "%C3%90"; }
   if($ char == "%D1"){return "%C3%91"; }
   if($ char == "%D2"){return "%C3%92"; }
   if($ char == "%D3"){return "%C3%93"; }
   if($ char == "%D4"){return "%C3%94"; }
   if($ char == "%D5"){return "%C3%95"; }
   if($ char == "%D6"){return "%C3%96"; }
   if($ char == "%D7"){return "%C3%97"; }
   if($ char == "%D8"){return "%C3%98"; }
   if($ char == "%D9"){return "%C3%99"; }
   if($ char == "%DA"){return "%C3%9A"; }
   if($ char == "%DB"){return "%C3%9B"; }
   if($ char == "%DC"){return "%C3%9C"; }
   if($ char == "%DD"){return "%C3%9D"; }
   if($ char == "%DE"){return "%C3%9E"; }
   if($ char == "%DF"){return "%C3%9F"; }
   if($ char == "%E0"){return "%C3%A0"; }
   if($ char == "%E1"){return "%C3%A1"; }
   if($ char == "%E2"){return "%C3%A2"; }
   if($ char == "%E3"){return "%C3%A3"; }
   if($ char == "%E4"){return "%C3%A4"; }
   if($ char == "%E5"){return "%C3%A5"; }
   if($ char == "%E6"){return "%C3%A6"; }
   if($ char == "%E7"){return "%C3%A7"; }
   if($ char == "%E8"){return "%C3%A8"; }
   if($ char == "%E9"){return "%C3%A9"; }
   if($ char == "%EA"){return "%C3%AA"; }
   if($ char == "%EB"){return "%C3%AB"; }
   if($ char == "%EC"){return "%C3%AC"; }
   if($ char == "%ED"){return "%C3%AD"; }
   if($ char == "%EE"){return "%C3%AE"; }
   if($ char == "%EF"){return "%C3%AF"; }
   if($ char == "%F0"){return "%C3%B0"; }
   if($ char == "%F1"){return "%C3%B1"; }
   if($ char == "%F2"){return "%C3%B2"; }
   if($ char == "%F3"){return "%C3%B3"; }
   if($ char == "%F4"){return "%C3%B4"; }
   if($ char == "%F5"){return "%C3%B5"; }
   if($ char == "%F6"){return "%C3%B6"; }
   if($ char == "%F7"){return "%C3%B7"; }
   if($ char == "%F8"){return "%C3%B8"; }
   if($ char == "%F9"){return "%C3%B9"; }
   if($ char == "%FA"){return "%C3%BA"; }
   if($ char == "%FB"){return "%C3%BB"; }
   if($ char == "%FC"){return "%C3%BC"; }
   if($ char == "%FD"){return "%C3%BD"; }
   if($ char == "%FE"){return "%C3%BE"; }
   if($ char == "%FF"){return "%C3%BF"; }
   $ charを返す;
}
    このコードはどうですか?
各層をエンコードしました。
実際にはそれはencodeURIと同じではありませんが、ホスト名と「/」はエンコードできます
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);
    }
}
/**
 * /programming/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));
}