/* 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($url);
echo $decoded_url;
// 출력: https://www.example.com/page.php?name=John Doe
urldecode(string $string): string
// 원본 문자열
$search = 'hello world!';

// urlencode()로 인코딩
$encodedSearch = urlencode($search);

// URL 생성
$url = 'https://example.com/search.php?q=' . $encodedSearch;

echo "생성된 URL: $url";
// 출력: '생성된 URL: https://example.com/search.php?q=hello+world%21'

// URL에서 쿼리 문자열 추출
$parsedUrl = parse_url($url);
$queryString = $parsedUrl['query']; // 'q=hello+world%21'

// 쿼리 문자열에서 값만 수동으로 추출 (parse_str 미사용)
$queryParts = explode('=', $queryString);
$encodedValue = $queryParts[1]; // hello+world%21

// urldecode()로 명시적 복원
$decodedValue = urldecode($encodedValue);

echo "복원된 검색어 (urldecode 사용): " . $decodedValue;
// 출력: '복원된 검색어 (urldecode 사용): hello world!'
// 데이터베이스나 로그에서 불러온 인코딩된 쿼리 문자열 (영어 + 공백 인코딩만 포함)
$encodedQuery = 'name=John+Doe&city=New+York';

// 쿼리 파라미터 각각 분리
$pairs = explode('&', $encodedQuery);
$params = [];

foreach ($pairs as $pair) {
    $parts = explode('=', $pair);
    $key = $parts[0];
    $value = isset($parts[1]) ? $parts[1] : '';
    // urldecode()로 직접 디코딩
    $params[$key] = urldecode($value);
}

echo '이름: ' . $params['name'] . '<br>';  // 출력: '이름: John Doe'
echo '도시: ' . $params['city'] . '<br>';  // 출력: '도시: New York'