urlencode

(PHP 4, PHP 5, PHP 7)

urlencodeURL-кодирование строки

Описание

string urlencode ( string $str )

Эта функция удобна, когда закодированная строка будет использоваться в запросе, как часть URL, также это удобный способ для передачи переменных другим страницам.

Список параметров

str

Строка, которая должны быть закодирована.

Возвращаемые значения

Возвращает строку, в которой все не цифробуквенные символы, кроме -_. должны быть заменены знаком процента (%), за которым следует два шестнадцатеричных числа, а пробелы кодируются как знак сложения (+). Строка кодируется тем же способом, что и POST данные WWW-формы, то есть по типу контента application/x-www-form-urlencoded. Это отличается от » RFC 3986 кодирования (см. rawurlencode() ) тем, что, по историческим соображениям, пробелы кодируются как знак "плюс" (+).

Примеры

Пример #1 Пример использования urlencode()

<?php
echo '<a href="mycgi?foo='urlencode($userinput), '">';
?>

Пример #2 Пример использования urlencode() и htmlentities()

<?php
$query_string 
'foo=' urlencode($foo) . '&bar=' urlencode($bar);
echo 
'<a href="mycgi?' htmlentities($query_string) . '">';
?>

Примечания

Замечание:

Будьте внимательны с переменными, которые могут совпадать с элементами HTML. Такие сущности как &amp, &copy и &pound разбираются браузером и используется как реальная сущность, а не желаемое имя переменной. Это очевидный конфликт, на который W3C указывает в течение многих лет. См. подробности: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2

PHP поддерживает изменение разделителя аргументов на рекомендуемый W3C символ "точку с запятой" путём изменения директивы arg_separator в .ini файле. К сожалению, большинство пользовательских приложений не отправляют данные формы в формате с разделителем "точка с запятой". Более переносимый способ решить эту проблему - это использовать &amp; вместо & в качестве разделителя. Вам не нужно будет для этого изменять PHP-директиву arg_separator. Оставьте разделитель как &, но кодируйте ваши URL с помощью htmlentities() или htmlspecialchars().

Смотрите также

  • urldecode() - Декодирование URL-кодированной строки
  • htmlentities() - Преобразует все возможные символы в соответствующие HTML-сущности
  • rawurlencode() - URL-кодирование строки согласно RFC 3986
  • rawurldecode() - Декодирование URL-кодированной строки
  • » RFC 3986

Коментарии

Like "Benjamin dot Bruno at web dot de" earlier has writen, you can have problems with encode strings with special characters to flash. Benjamin write that:

<?php
   
function flash_encode ($input)
   {
      return 
rawurlencode(utf8_encode($input));
   }
?>

... could do the problem. Unfortunately flash still have problems with read some quotations, but with this one:

<?php
   
function flash_encode($string)
   {
     
$string rawurlencode(utf8_encode($string));

     
$string str_replace("%C2%96""-"$string);
     
$string str_replace("%C2%91""%27"$string);
     
$string str_replace("%C2%92""%27"$string);
     
$string str_replace("%C2%82""%27"$string);
     
$string str_replace("%C2%93""%22"$string);
     
$string str_replace("%C2%94""%22"$string);
     
$string str_replace("%C2%84""%22"$string);
     
$string str_replace("%C2%8B""%C2%AB"$string);
     
$string str_replace("%C2%9B""%C2%BB"$string);

      return 
$string;
   }
?>

... should solve this problem.
2007-08-04 20:04:51
http://php5.kiev.ua/manual/ru/function.urlencode.html
Don't use urlencode() or urldecode() if the text includes an email address, as it destroys the "+" character, a perfectly valid email address character.

Unless you're certain that you won't be encoding email addresses AND you need the readability provided by the non-standard "+" usage, instead always use use rawurlencode() or rawurldecode().
2009-06-29 10:24:10
http://php5.kiev.ua/manual/ru/function.urlencode.html
I needed encoding and decoding for UTF8 urls, I came up with these very simple fuctions. Hope this helps!

<?php
   
function url_encode($string){
        return 
urlencode(utf8_encode($string));
    }
   
    function 
url_decode($string){
        return 
utf8_decode(urldecode($string));
    }
?>
2009-07-23 13:44:44
http://php5.kiev.ua/manual/ru/function.urlencode.html
I needed a function in PHP to do the same job as the complete escape function in Javascript. It took me some time not to find it. But findaly I decided to write my own code. So just to save time:

<?php
function fullescape($in)
{
 
$out '';
  for (
$i=0;$i<strlen($in);$i++)
  {
   
$hex dechex(ord($in[$i]));
    if (
$hex==''
       
$out $out.urlencode($in[$i]);
    else 
       
$out $out .'%'.((strlen($hex)==1) ? ('0'.strtoupper($hex)):(strtoupper($hex)));
  }
 
$out str_replace('+','%20',$out);
 
$out str_replace('_','%5F',$out);
 
$out str_replace('.','%2E',$out);
 
$out str_replace('-','%2D',$out);
  return 
$out;
 }
?>

It can be fully decoded using the unscape function in Javascript.
2010-02-24 13:17:50
http://php5.kiev.ua/manual/ru/function.urlencode.html
urlencode function and rawurlencode are mostly based on RFC 1738.

However, since 2005 the current RFC in use for URIs standard is RFC 3986.

Here is a function to encode URLs according to RFC 3986.

<?php
function myUrlEncode($string) {
   
$entities = array('%21''%2A''%27''%28''%29''%3B''%3A''%40''%26''%3D''%2B''%24''%2C''%2F''%3F''%25''%23''%5B''%5D');
   
$replacements = array('!''*'"'""("")"";"":""@""&""=""+""$"",""/""?""%""#""[""]");
    return 
str_replace($entities$replacementsurlencode($string));
}
?>
2010-05-18 21:53:57
http://php5.kiev.ua/manual/ru/function.urlencode.html
this function will encode the URL while preserving the functionality of URL so you can copy and paste it in the browser
```
function urlEncode($url) {
    $parsedUrl = parse_url($url);
   
    $encodedScheme = urlencode($parsedUrl['scheme']);
    $encodedHost = urlencode($parsedUrl['host']);
   
    $encodedPath = implode('/', array_map('urlencode', explode('/', $parsedUrl['path'])));
    if (isset($parsedUrl['query'])) {
        $encodedQuery = '?' . urlencode($parsedUrl['query']);
    } else {
        $encodedQuery = '';
    }
   
    return "{$encodedScheme}://{$encodedHost}{$encodedPath}{$encodedQuery}";
}
```
2023-08-29 03:31:03
http://php5.kiev.ua/manual/ru/function.urlencode.html

    Поддержать сайт на родительском проекте КГБ