Что эквивалентно функции JavaScript encodeURIcomponent
в PHP?
Что эквивалентно JavaScript encodeURIcomponent в PHP?
Ответ 1
Попробуйте rawurlencode
. Или, если быть более точным:
function encodeURIComponent($str) {
$revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');
return strtr(rawurlencode($str), $revert);
}
Эта функция работает точно как encodeURIComponent
определяется:
encodeURIComponent
выделяет все символы, кроме следующих: алфавитные, десятичные цифры,-
_
.
!
~
*
'
(
)
Ответ 2
Вы попробовали urlencode
?
Ответ 3
функция encodeURIComponent ($ string) { $ result = ""; for ($ я = 0; $i < strlen ($ string); $i ++) { $ result. = encodeURIComponentbycharacter (urlencode ($ string [$ i])); } return $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"; } return $char; }
Ответ 4
как этот код?
Я закодировал каждый уровень.
на самом деле это не то же самое, что и 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);
}
}
/**
* 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));
}
Ответ 5
http_build_query