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 태그의 난독화된 버전을 작성합니다.

매개변수:
  • $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/…