URL 헬퍼
URL 헬퍼 파일에는 URL 작업을 지원하는 함수가 포함되어 있습니다.
헬퍼 로드
이 헬퍼는 모든 요청 시 프레임워크에 의해 자동으로 로드됩니다.
사용 가능한 함수
다음 함수를 사용할 수 있습니다:
- site_url([$uri = ''[, $protocol = null[, $altConfig = null]]])
- 매개변수:
$uri (
array|string) – URI 문자열 또는 URI 세그먼트 배열.$protocol (
string) – 프로토콜(예:'http'또는'https'). 빈 문자열''을 설정하면 프로토콜 상대 링크가 반환됩니다.$altConfig (
\Config\App) – 사용할 대체 설정.
- 반환:
사이트 URL
- 반환 형식:
string
참고
v4.3.0부터
Config\App::$allowedHostnames를 설정하면 현재 URL이 일치할 때 해당 호스트명이 설정된 URL을 반환합니다.설정 파일에 지정된 사이트 URL을 반환합니다. index.php 파일(또는 설정 파일의
Config\App::$indexPage에 설정한 값)이 URL에 추가되며, 함수에 전달하는 URI 세그먼트도 추가됩니다.URL이 변경될 경우 페이지의 이식성을 높이기 위해 로컬 URL을 생성할 때는 항상 이 함수를 사용하는 것이 좋습니다.
세그먼트는 선택적으로 문자열 또는 배열 형태로 함수에 전달할 수 있습니다. 다음은 문자열 예입니다:
<?php echo site_url('news/local/123');
위 예는 다음과 같은 결과를 반환합니다: http://example.com/index.php/news/local/123
다음은 배열로 전달된 세그먼트의 예입니다:
<?php $segments = ['news', 'local', '123']; echo site_url($segments);
다른 설정 기본 설정을 포함하는 다른 사이트의 URL을 생성하는 경우 대체 설정이 유용할 수 있습니다. 프레임워크 자체의 단위 테스트에 사용합니다.
- base_url([$uri = ''[, $protocol = null]])
- 매개변수:
$uri (
array|string) – URI 문자열 또는 URI 세그먼트 배열.$protocol (
string) – 프로토콜(예:'http'또는'https'). 빈 문자열''을 설정하면 프로토콜 상대 링크가 반환됩니다.
- 반환:
기본 URL
- 반환 형식:
string
참고
v4.3.0부터
Config\App::$allowedHostnames를 설정하면 현재 URL이 일치할 때 해당 호스트명이 설정된 URL을 반환합니다.참고
이전 버전에서는 인수 없이 호출하면 끝에 슬래시(
/)가 없는 기본 URL을 반환했습니다. 이 버그가 수정되어 v4.3.2부터는 끝에 슬래시가 있는 기본 URL을 반환합니다.설정 파일에 지정된 사이트 기본 URL을 반환합니다. 예:
<?php echo base_url();
이 함수는
Config\App::$indexPage가 추가되지 않는다는 점을 제외하고site_url()과 동일한 결과를 반환합니다.또한
site_url()과 마찬가지로 세그먼트를 문자열 또는 배열로 제공할 수 있습니다. 다음은 문자열 예입니다:<?php // Returns like `http://example.com/blog/post/123` echo base_url('blog/post/123');
위 예는 다음과 같은 결과를 반환합니다: http://example.com/blog/post/123
두 번째 매개변수로 빈 문자열
''을 전달하면 프로토콜 상대 링크를 반환합니다:<?php // Returns like `//example.com/blog/post/123` echo base_url('blog/post/123', '');
site_url()과 달리 이미지나 스타일시트와 같은 파일에 대한 문자열을 제공할 수 있으므로 유용합니다. 예:<?php echo base_url('images/icons/edit.png');
이는 다음과 같은 결과를 반환합니다: http://example.com/images/icons/edit.png
- current_url([$returnObject = false[, $request = null]])
- 매개변수:
$returnObject (
boolean) – 문자열 대신 URI 인스턴스를 반환하려면 true.$request (
IncomingRequest|null) – 경로 감지에 사용할 대체 요청. 테스트에 유용합니다.
- 반환:
현재 URL
- 반환 형식:
string|\CodeIgniter\HTTP\URI
현재 보고 있는 페이지의 전체 URL을 반환합니다. 문자열로 반환할 때는 URL의 쿼리 및 프래그먼트 부분이 제거됩니다. URI로 반환할 때는 쿼리 및 프래그먼트 부분이 보존됩니다.
그러나 보안상의 이유로
Config\App설정을 기반으로 생성되며, 브라우저 URL과 일치하도록 의도되지 않습니다.v4.3.0부터
Config\App::$allowedHostnames를 설정하면 현재 URL이 일치할 때 해당 호스트명이 설정된 URL을 반환합니다.참고
current_url()을 호출하는 것은 다음과 동일합니다:site_url(uri_string());
중요
v4.1.2 이전에는 이 함수에
Config\App::$indexPage설정을 무시하는 버그가 있었습니다.
- previous_url([$returnObject = false])
- 매개변수:
$returnObject (
boolean) – 문자열 대신 URI 인스턴스를 반환하려면 true.
- 반환:
사용자가 이전에 방문한 URL
- 반환 형식:
string|\CodeIgniter\HTTP\URI
사용자가 이전에 방문한 페이지의 전체 URL(세그먼트 포함)을 반환합니다.
참고
HTTP_REFERER시스템 변수를 무작정 신뢰하는 보안 문제로 인해, 세션을 사용할 수 있는 경우 CodeIgniter는 이전에 방문한 페이지를 세션에 저장합니다. 이를 통해 항상 알려진 신뢰할 수 있는 출처를 사용할 수 있습니다. 세션이 로드되지 않았거나 사용할 수 없는 경우 정제된 버전의HTTP_REFERER가 사용됩니다.
- uri_string()
- 반환:
URI 문자열
- 반환 형식:
string
baseURL을 기준으로 한 현재 URL의 경로 부분을 반환합니다.
예를 들어 baseURL이 http://some-site.com/이고 현재 URL이 다음과 같을 때:
http://some-site.com/blog/comments/123
함수는 다음을 반환합니다:
blog/comments/123
baseURL이 http://some-site.com/subfolder/이고 현재 URL이 다음과 같을 때:
http://some-site.com/subfolder/blog/comments/123
함수는 다음을 반환합니다:
blog/comments/123
참고
이전 버전에서는
$relative = false매개변수가 정의되어 있었습니다. 그러나 버그로 인해 이 함수는 항상 baseURL을 기준으로 한 경로를 반환했습니다. v4.3.2부터 해당 매개변수가 제거되었습니다.참고
이전 버전에서는 baseURL로 이동할 때 이 함수가
/를 반환했습니다. v4.3.2부터 버그가 수정되어 빈 문자열('')을 반환합니다.
- index_page([$altConfig = null])
- 매개변수:
$altConfig (
\Config\App) – 사용할 대체 설정
- 반환:
indexPage값- 반환 형식:
string
설정 파일에 지정된 사이트의 indexPage를 반환합니다. 예:
<?php echo index_page();
site_url()과 마찬가지로 대체 설정을 지정할 수 있습니다. 다른 설정 기본 설정을 포함하는 다른 사이트의 URL을 생성하는 경우 대체 설정이 유용할 수 있습니다. 프레임워크 자체의 단위 테스트에 사용합니다.
- anchor([$uri = ''[, $title = ''[, $attributes = ''[, $altConfig = null]]]])
- 매개변수:
$uri (
array|string) – URI 문자열 또는 URI 세그먼트 배열$title (
string) – 앵커 제목$attributes (
array|object|string) – HTML 속성$altConfig (
\Config\App|null) – 사용할 대체 설정
- 반환:
HTML 하이퍼링크 (앵커 태그)
- 반환 형식:
string
로컬 사이트 URL을 기반으로 표준 HTML 앵커 링크를 생성합니다.
첫 번째 매개변수는 URL에 추가할 세그먼트를 포함할 수 있습니다. 위의
site_url()함수와 마찬가지로 세그먼트는 문자열 또는 배열이 될 수 있습니다.참고
애플리케이션 내부 링크를 만들 때는 기본 URL(
http://...)을 포함하지 마십시오. 설정 파일에 지정된 정보에서 자동으로 추가됩니다. URL에 추가할 URI 세그먼트만 포함하십시오.두 번째 세그먼트는 링크에 표시할 텍스트입니다. 비워두면 URL이 사용됩니다.
세 번째 매개변수는 링크에 추가할 속성 목록을 포함할 수 있습니다. 속성은 단순 문자열 또는 연관 배열이 될 수 있습니다.
다음은 몇 가지 예입니다:
<?php echo anchor('news/local/123', 'My News', 'title="News title"'); // Prints: <a href="http://example.com/index.php/news/local/123" title="News title">My News</a> echo anchor('news/local/123', 'My News', ['title' => 'The best news!']); // Prints: <a href="http://example.com/index.php/news/local/123" title="The best news!">My News</a> echo anchor('', 'Click here'); // Prints: <a href="http://example.com/index.php">Click here</a>
위와 마찬가지로 대체 설정을 지정할 수 있습니다. 다른 설정 기본 설정을 포함하는 다른 사이트의 링크를 생성하는 경우 대체 설정이 유용할 수 있습니다. 프레임워크 자체의 단위 테스트에 사용합니다.
참고
앵커 함수에 전달된 속성은 XSS 공격으로부터 보호하기 위해 자동으로 이스케이프됩니다.
- anchor_popup([$uri = ''[, $title = ''[, $attributes = false[, $altConfig = null]]]])
- 매개변수:
$uri (
string) – URI 문자열$title (
string) – 앵커 제목$attributes (
array|false|object|string) – HTML 속성$altConfig (
\Config\App) – 사용할 대체 설정
- 반환:
팝업 하이퍼링크
- 반환 형식:
string
anchor()함수와 거의 동일하지만 URL을 새 창에서 엽니다. 세 번째 매개변수에 JavaScript 창 속성을 지정하여 창이 열리는 방식을 제어할 수 있습니다. 세 번째 매개변수가 설정되지 않으면 브라우저 설정에 따라 새 창이 열립니다.다음은 속성을 사용한 예입니다:
<?php $atts = [ 'width' => 800, 'height' => 600, 'scrollbars' => 'yes', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => 0, 'screeny' => 0, 'window_name' => '_blank', ]; echo anchor_popup('news/local/123', 'Click Me!', $atts);
위와 마찬가지로 대체 설정을 지정할 수 있습니다. 다른 설정 기본 설정을 포함하는 다른 사이트의 링크를 생성하는 경우 대체 설정이 유용할 수 있습니다. 프레임워크 자체의 단위 테스트에 사용합니다.
참고
위 속성은 함수의 기본값이므로 필요한 것과 다른 것만 설정하면 됩니다. 함수가 모든 기본값을 사용하게 하려면 세 번째 매개변수로 빈 배열을 전달하면 됩니다:
<?php echo anchor_popup('news/local/123', 'Click Me!', []);
참고
window_name은 실제 속성이 아니라 창 이름 또는 창 대상을 받는 JavaScript window.open() 메서드의 인수입니다.
참고
위에 나열된 속성 이외의 다른 속성은 앵커 태그의 HTML 속성으로 파싱됩니다.
참고
anchor_popup 함수에 전달된 속성은 XSS 공격으로부터 보호하기 위해 자동으로 이스케이프됩니다.
- mailto($email[, $title = ''[, $attributes = '']])
- 매개변수:
$email (
string) – 이메일 주소$title (
string) – 앵커 제목$attributes (
array|object|string) – HTML 속성
- 반환:
“mail to” 하이퍼링크
- 반환 형식:
string
표준 HTML 이메일 링크를 생성합니다. 사용 예:
<?php echo mailto('me@my-site.com', 'Click Here to Contact Me');
위의
anchor()탭과 마찬가지로 세 번째 매개변수를 사용하여 속성을 설정할 수 있습니다:<?php $attributes = ['title' => 'Mail me']; echo mailto('me@my-site.com', 'Contact Me', $attributes);
참고
mailto 함수에 전달된 속성은 XSS 공격으로부터 보호하기 위해 자동으로 이스케이프됩니다.
- safe_mailto($email[, $title = ''[, $attributes = '']])
- 매개변수:
$email (
string) – 이메일 주소$title (
string) – 앵커 제목$attributes (
array|object|string) – HTML 속성
- 반환:
스팸 방지 “mail to” 하이퍼링크
- 반환 형식:
string
mailto()함수와 동일하지만 스팸 봇에 의해 이메일 주소가 수집되는 것을 방지하기 위해 JavaScript로 작성된 서수 숫자를 사용하여 mailto 태그의 난독화된 버전을 작성합니다.
- auto_link($str[, $type = 'both'[, $popup = false]])
- 매개변수:
$str (
string) – 입력 문자열$type (
string) – 링크 유형 ('email','url'또는'both')$popup (
bool) – 팝업 링크 생성 여부
- 반환:
링크로 변환된 문자열
- 반환 형식:
string
문자열에 포함된 URL과 이메일 주소를 자동으로 링크로 변환합니다. 예:
<?php $string = auto_link($string);
두 번째 매개변수는 URL과 이메일이 모두 변환될지 아니면 둘 중 하나만 변환될지를 결정합니다. 매개변수를 지정하지 않으면 기본적으로 둘 다 변환됩니다. 이메일 링크는 위에 표시된 것처럼
safe_mailto()로 인코딩됩니다.URL만 변환합니다:
<?php $string = auto_link($string, 'url');
이메일 주소만 변환합니다:
<?php $string = auto_link($string, 'email');
세 번째 매개변수는 링크를 새 창에서 표시할지 여부를 결정합니다. 값은 true 또는 false(불리언)가 될 수 있습니다:
<?php $string = auto_link($string, 'both', true);
참고
인식되는 URL은
www.또는://으로 시작하는 것뿐입니다.
- url_title($str[, $separator = '-'[, $lowercase = false]])
- 매개변수:
$str (
string) – 입력 문자열$separator (
string) – 단어 구분자 (일반적으로'-'또는'_')$lowercase (
bool) – 출력 문자열을 소문자로 변환할지 여부
- 반환:
URL 형식의 문자열
- 반환 형식:
string
문자열을 입력으로 받아 사람이 읽기 쉬운 URL 문자열을 생성합니다. 예를 들어 블로그에서 항목의 제목을 URL에 사용하려는 경우에 유용합니다. 예:
<?php $title = "What's wrong with CSS?"; $url_title = url_title($title); // Produces: Whats-wrong-with-CSS
두 번째 매개변수는 단어 구분자를 결정합니다. 기본적으로 대시가 사용됩니다. 권장 옵션:
-(대시) 또는_(밑줄).예:
<?php $title = "What's wrong with CSS?"; $url_title = url_title($title, '_'); // Produces: Whats_wrong_with_CSS
세 번째 매개변수는 소문자를 강제할지 여부를 결정합니다. 기본적으로 강제하지 않습니다. 옵션은 불리언 true/false입니다.
예:
<?php $title = "What's wrong with CSS?"; $url_title = url_title($title, '-', true); // Produces: whats-wrong-with-css
- mb_url_title($str[, $separator = '-'[, $lowercase = false]])
- 매개변수:
$str (
string) – 입력 문자열$separator (
string) – 단어 구분자 (일반적으로'-'또는'_')$lowercase (
bool) – 출력 문자열을 소문자로 변환할지 여부
- 반환:
URL 형식의 문자열
- 반환 형식:
string
이 함수는
url_title()과 동일하게 작동하지만 모든 악센트 문자를 자동으로 변환합니다.
- parse_subdomain($hostname)
- 매개변수:
$hostname (
string|null) – 파싱할 호스트명. null이면 현재 요청의 호스트를 사용합니다.
- 반환:
서브도메인, 없는 경우 빈 문자열.
- 반환 형식:
string
주어진 호스트명에서 서브도메인을 파싱합니다.
다음은 몇 가지 예입니다:
<?php // Outputs "blog" echo parse_subdomain('blog.example.com'); // Outputs an empty string echo parse_subdomain('example.com'); echo parse_subdomain('example.co.uk'); // Outputs "shop" - correctly handles two-part TLDs echo parse_subdomain('shop.example.co.uk'); // Outputs "shop.old" echo parse_subdomain('shop.old.example.co.uk');
Config\Hostnames::TWO_PART_TLDS배열에 추가하여 알려진 두 부분으로 구성된 TLD 목록을 사용자 정의할 수 있습니다.
- prep_url([$str = ''[, $secure = false]])
- 매개변수:
$str (
string) – URL 문자열$secure (
boolean) –https://를 사용하려면 true
- 반환:
프로토콜 접두사가 붙은 URL 문자열
- 반환 형식:
string
URL에 프로토콜 접두사가 없는 경우
http://또는https://를 추가합니다.URL 문자열을 다음과 같이 함수에 전달합니다:
<?php $url = prep_url('example.com');
- url_to($controller[, ...$args])
- 매개변수:
$controller (
string) – 라우트 이름 또는 Controller::method...$args (
int|string) – 라우트에 전달할 하나 이상의 매개변수. 마지막 매개변수를 사용하면 로케일을 설정할 수 있습니다.
- 반환:
절대 URL
- 반환 형식:
string
참고
이 함수를 사용하려면 컨트롤러/메서드에 app/Config/Routes.php에 라우트가 정의되어 있어야 합니다.
앱의 컨트롤러 메서드에 대한 절대 URL을 구성합니다. 예:
<?php // The route is defined as: $routes->get('/', 'Home::index'); ?> <a href="<?= url_to('Home::index') ?>">Home</a> <!-- Result: 'http://example.com/' -->
라우트에 인수를 추가할 수도 있습니다. 다음은 예입니다:
<?php // The route is defined as: $routes->get('pages/(:segment)', 'Page::index/$1'); ?> <a href="<?= url_to('Page::index', 'home') ?>">Home</a> <!-- Result: 'http://example.com/pages/home' -->
뷰에 링크를 추가한 후에도 라우트를 변경할 수 있으므로 유용합니다.
v4.3.0부터 라우트에서
{locale}을 사용할 때 마지막 매개변수로 선택적으로 로케일 값을 지정할 수 있습니다.<?php // The route is defined as: $routes->add( '{locale}/users/(:num)/gallery/(:num)', 'Galleries::showUserGallery/$1/$2', ['as' => 'user_gallery'], ); ?> <a href="<?= url_to('user_gallery', 15, 12, 'en') ?>">View Gallery</a> <!-- Result: 'http://example.com/en/users/15/gallery/12' -->
- url_is($path)
- 매개변수:
$path (
string) – 현재 URI 경로와 비교할 baseURL 기준의 URL 경로.
- 반환 형식:
boolean
현재 URL의 경로를 주어진 경로와 비교하여 일치하는지 확인합니다. 예:
<?php if (url_is('admin')) { // ... }
이는 http://example.com/admin과 일치합니다. baseURL이
http://example.com/subdir/이면 http://example.com/subdir/admin과 일치합니다.URL에서 다른 적용 가능한 문자를 일치시키려면
*와일드카드를 사용할 수 있습니다:<?php if (url_is('admin*')) { // ... }
이는 다음 중 하나와 일치합니다:
/admin
/admin/
/admin/users
/admin/users/schools/classmates/…