urlencode()関数は
URLクエリパラメータの値として使用する文字列をエンコードする際に主に利用されます。
- urlencode()関数は、指定された文字列をURLで使用できるようにエンコードします。
- 空白はプラス(+)記号に置き換えられるという特徴があります。
- 空白をプラス(+)記号に置き換えるこの特徴は、HTMLフォームデータの送信方式、すなわちapplication/x-www-form-urlencodedメディアタイプとの互換性によるものです。
- urlencode()関数は、このようなHTMLフォーム送信の規則に従うように設計されています。空白をプラス(+)にエンコードするHTMLフォームデータの送信方式と同じであるためです。
- このような理由から、urlencode()関数はURLクエリパラメータの値として使用する文字列をエンコードする際に主に利用されます。
基本例
// 次のページに渡す変数の値
$search = 'hello world!';
// URLクエリ値としてエンコード
$encodedSearch = urlencode($search);
// エンコードした値をクエリ文字列に含める
$url = 'https://example.com/search.php?q=' . $encodedSearch;
echo $url;
// 出力: 'https://example.com/search.php?q=hello+world%21'
ウェブアプリケーションでは、ユーザーから入力を受け取り、URLに含めて別のページに渡すことが頻繁に発生します。
このとき、クエリ文字列に使用される値は空白や特殊文字を含む可能性があるため、正しいURLを生成するには必ずエンコードが必要です。
また、次のページに変数を渡す際も、変数の値に空白や特殊文字が含まれる可能性があるため、安全に渡すためにurlencode()関数を使用すると便利です。
戻り値
アルファベットの大文字・小文字、数字、-、_、.の文字を除くすべての文字は、2桁の16進数に続くパーセント(%)記号で置き換えられます。また、空白はプラス(+)記号でエンコードされます。
このエンコードは、ウェブフォームから送信されたデータと同じ方式でエンコードされます。つまり、application/x-www-form-urlencodedメディアタイプと同じ方式です。ブラウザは空白を+として解釈します。したがって、HTMLフォームからURLを収集する際には主にurlencode()関数がよく使用されます。HTMLフォームで収集したデータをURLのクエリ文字列に追加したり、別のページに渡す場合に適しています。
使用例
$userinput = 'Data123!@-_ +';
echo "UserInput: $userinput\n";
echo '<a href="mycgi?foo=' . urlencode($userinput) . '">';
/* 出力:
'UserInput: Data123!@-_ +'
'<a href="mycgi?foo=Data123%21%40-_+%2B">'
*/
$name = '山田太郎';
$age = 20;
$query_string = 'name=' . urlencode($name) . '&age=' . urlencode($age);
$url = "https://example.com/?$query_string";
echo $url;
// 出力: 'https://example.com/?name=%E5%B1%B1%E7%94%B0%E5%A4%AA%E9%83%8E&age=20'
参考資料
https://codingeverybody.jp/php-urlencode-function/
PHP urlencode() 関数:URL クエリパラメータの値をエンコードする際に使用 - codingEverybody
urlencode()関数は、URLクエリパラメータの値として使用する文字列をエンコードするために主に利用されます。特に、この関数は次のページへ渡す変数の値をURLクエリ値としてエンコードする
codingeverybody.jp
PHP urlencode() 함수 – URL 쿼리 파라미터의 값 인코딩할 때 - 코딩에브리바디
urlencode() 함수는 URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩하는데 주로 사용합니다. 특히, 이 함수는 다음 페이지로 전달되는 변수 값을 URL 쿼리 값으로 인코딩할 때 편리합니다.
codingeverybody.kr