일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 모바일바람의나라
- 걸스데이
- 페그오
- 에미넴
- 매일영어단어
- 일본패치
- 막피범
- Eminem
- 매드클라운
- 레어닉
- 바람의나라
- 매일영어단어외우기
- 2차신수
- 나스닥
- 타라옷
- 페이트그랜드오더
- 폭선우의무덤
- 수지
- 돌림판이벤트
- 어린궁기
- 체마1등
- 미국주식
- 2차승급
- 보물수호
- 영어단어
- 주작의용천제일검
- 바람의나라연
- 피렌체
- 아이유
- 북천황의감옥
- Today
- Total
티스의 이야기
URL의 일부분에 한국어 사용 본문
URL의 일부분에 한국어 사용
RFC 3986을 기초로하여 인코딩하는 rawurlencode() 함수
rawurlencode() 함수로 URL 인코딩하면 <a> 태그의 href 속성에 한국어를 포함한 값을 전달하거나 'index.php?search=문자열'과 같은 쿼리(query) 문자열에 한국어를 이용할 수 있습니다
쿼리 문자열 등 HTTP 요청에서 받은 데이터는 PHP에 의해 자동으로 디코딩되므로 특별히 처리하지 않고 그대로 이용할 수 있습니다.
URL 인코딩된 후 파일 등에 저장된 데이터를 다시 꺼냈을 때 자동으로 디코딩되지 않기 때문에 rawurlencode() 함수가 있습니다. 이들 함수의 차이는 싱글 바이트 공백과 '~'의 인코딩으로 urlencode() 함수에서는 각각 '+'와 '%7E'가 되고 rawurlencode() 함수에서는 '%20', '~'가 됩니다(PHP 5.3 이후 rawurlencode() 함수는 RFC 3986에 따라 '~'을 인코딩하지 않습니다). Web API 등에서는 RFC 3986에서 URL 인코딩이 요구되는 경우가 많으므로 다음의 예제에서는 rawurlencode() 함수를 사용하고 있습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>URL의 일부분에 한국어를 이용하고 싶을 때</title>
</head>
<body>
<div>
<form method="get" action="urlencode.php">
<p>문자열을 입력하고 링크를 클릭합니다<br>
<input type="text" name="data">
<input type="submit" value="전송">
</p>
</form>
<?php
// h() 함수 레시피 218를 불러옵니다 레시피 041.
require_once '../../../../lib/h.php';
if (isset($_GET['data'])) {
$string = $_GET['data'];
// URL을 인코딩합니다.
$urlEncode = rawurlencode($_GET['data']);
$url = $_SERVER['SCRIPT_NAME'] . '?data2=' . $urlEncode;
echo '처리 전 문자열: ' . h($string) . '<br>';
echo '인코딩 처리 후: ' . h($urlEncode) . '<br>';
echo '<a href="' . h($url) . '">링크</a>';
}
if (isset($_GET['data2'])) {
$string = $_GET['data2'];
echo '디코딩 처리 후: ' . h($string);
}
?>
</div>
</body>
</html>
'프로그래밍' 카테고리의 다른 글
쿠키에 데이터를 저장하고 싶을 때 (0) | 2016.06.30 |
---|---|
줄 바꿈 문자의 앞에 줄 바꿈 태그를 삽입 (0) | 2016.06.30 |
안전하게 브라우저에서 값을 표시할때 (0) | 2016.06.30 |
PHP-패스워드 해시화 (0) | 2016.06.29 |
PHP-yyyy/mm/dd 형식의 날짜를 이용 (0) | 2016.06.29 |