/* urlencode()関数を使用してURLで利用できる形式に文字列をエンコード */
$url = 'https://www.example.com/page.php?name=John Doe';
$encoded_url = urlencode($url);
echo $encoded_url . '<br>';
// 出力: https%3A%2F%2Fwww.example.com%2Fpage.php%3Fname%3DJohn+Doe

/* urlencode()でエンコードされたURLをデコード */
$decoded_url = urldecode($encoded_url);
echo $decoded_url;
// 出力: https://www.example.com/page.php?name=John Doe
/* rawurlencode()関数でクエリパラメータの値をエンコード */
$keyword = 'iPhone & Galaxy/Note=100% #1';
$encoded = rawurlencode($keyword);

echo 'https://example.com/search?query=' . $encoded;
// 出力: 'https://example.com/search?query=iPhone%20%26%20Galaxy%2FNote%3D100%25%20%231'

/* rawurlencode()でエンコードされたクエリパラメータの値をデコード */
$decoded = rawurldecode($encoded);
echo $decoded;
// 出力: 'iPhone & Galaxy/Note=100% #1'
// URLで使用できる文字列形式にエンコードする配列
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

// http_build_query()関数を使用してクエリ文字列にエンコード
$queryString = http_build_query($data);
echo $queryString; // 出力: name=John+Doe&age=30&city=New+York

// parse_str()関数を使用してデコード
// パースしたデータを第2引数の$decodedArrayに配列として格納
parse_str($queryString, $decodedArray);

print_r($decodedArray); // 出力: Array ( [name] => John Doe [age] => 30 [city] => New York )