URL Helper
URL 헬퍼는 URL조작에 필요한 함수들을 제공합니다.
헬퍼로딩 Loading this Helper
다음과같이 헬퍼를 로드합니다:
$this->load->helper('url');
다음 함수들이 사용가능 합니다:
site_url()
설정파일에 정의된 사이트의 URL을 리턴합니다. URL 에는 index.php(혹은 인덱스파일로 지정한 파일) 파일 및 함수로 전달된 URL 세그먼트들이 포함됩니다.그리고 설정파일에 있는 url_suffix 도 포함됩니다.
URL 이 변경되었을 경우에도 영향을 받지 않도록 하려면 로컬URL 을 생성하실때 이 함수를 이용하시는것이 좋습니다.
새그먼트를 전달하는것은 옵션이며 문자열이나 배열을 사용하실 수 있습니다. 문자열 예제:
echo site_url("news/local/123");
위 예제는 다음과 같은 결과를 리턴합니다: http://example.com/index.php/news/local/123
배열을 사용하는 예제:
$segments = array('news', 'local', '123');
echo site_url($segments);
base_url()
설정파일에 정의된 기반(base) URL을 리턴합니다. 예:
echo base_url();
index_page 나url_suffix 이 추가되지않는다는 점을 제외하면 site_url 과 동일한 결과를 리턴합니다.
site_url처럼 세그먼트를 문자열이나 배열로 넘겨줄 수 있습니다. 예:
echo base_url("blog/post/123");
위 예제는 다음 비스무리한 결과를 냅니다: http://example.com/blog/post/123
이 함수는 site_url ()와 달리 이미지와 스타일 시트 같은 파일에 문자열을 전달할 수있는 것이 편리합니다. 예 :
echo base_url("images/icons/edit.png");
위 예제는 다음 비스무리한 결과를 냅니다:http://example.com/images/icons/edit.png
current_url()
현재 보여지고 있는 페이지의 전체URL (새그먼트 포함)을 리턴합니다.
uri_string()
함수를 호출하고 있는 페이지의 URI 새그먼트를 리턴합니다. 예를들어, URL이 아래와 같다면:
http://some-site.com/blog/comments/123
함수는 아래와같은 결과를 리턴합니다:
blog/comments/123
index_page()
설정파일에 정의 된 인덱스페이지를 리턴합니다. 예:
echo index_page();
anchor()
표준 HTML 앵커 링크(anchor link)를 사이트 URL 에 맞도록 생성해 줍니다:
<a href="http://example.com">Click Here</a>
이 태그는 옵션으로 3개의 파라미터를 가질 수 있습니다:
anchor(uri segments, text, attributes)
첫번째 파라미터는 URL 에 덧붙이고 싶은 새그먼트들 입니다.위의 site_url() 함수와 같이 새그먼트는 문자열이나 배열로 전달할 수 있습니다.
참고: 프로그램 안에서 사용하는 URL 을 만드실경우 기반URL (http://...) 을 포함하지 마세요. 자동으로 붙습니다. 필요한 URI 새그먼트만 넘겨주시면 됩니다.
두번째 파라미터는 링크로 표시할 텍스트입니다. 공백으로 두시면, URL 그 자체가 사용됩니다.
세번째 파라미터는 링크에 추가하고싶은 속성입니다. 속성은 문자열이나, 연관배열로 설정하실 수 있습니다.
예:
echo anchor('news/local/123', 'My News', 'title="News title"');
결과: <a href="http://example.com/index.php/news/local/123" title="News title">My News</a>
echo anchor('news/local/123', 'My News', array('title' => 'The best news!'));
결과: <a href="http://example.com/index.php/news/local/123" title="The best news!">My News</a>
anchor_popup()
anchor() 함수와 같으나 URL을 팝업으로 띄웁니다. 세번째 파라미터로 윈도우 형태를 설정하실 수 있습니다.세번째 파라미터를 설정하지 않으시면 여러분의 브라우저 설정에 따라 창이 열립니다. 예:
$atts = array(
'width' => '800',
'height' => '600',
'scrollbars' => 'yes',
'status' => 'yes',
'resizable' => 'yes',
'screenx' => '0',
'screeny' => '0'
);
echo anchor_popup('news/local/123', 'Click Me!', $atts);
참고: 위 속성들은 함수의 기본값이므로, 위설정과 다른부분만 직접 설정하시면 됩니다. 위 기본값을 그대로 사용하려면, 세번째 파라미터로 빈 배열을 넘겨주시면 됩니다:
echo anchor_popup('news/local/123', 'Click Me!', array());
mailto()
표준email 링크를 생성합니다. 사용 예:
echo mailto('me@my-site.com', 'Click Here to Contact Me');
anchor() 와 마찬가지로, 세번째 파라미터로 속성을 설정하실 수 있습니다.
safe_mailto()
위 함수와 같으나, 스팸로봇에게 메일주소가 수집되는것을 막기위해 헷갈리도록 mailto 태그 를 생성합니다. 이때 자바스크립트를 이용하여 순차적으로 생성되는 숫자를 이용합니다 .
auto_link()
문자열에 포함되어있는 URL 및email 주소를 링크로 변환시켜 줍니다. 예:
$string = auto_link($string);
두번째 파라미터는 이메일만 변환할지, URL 만 변환할지 아니면 모두 변환할지를 결정합니다. 파라미터를 설정하지 않으시면 기본값으로 둘다 변환합니다. 이메일 링크는 위의safe_mailto() 함수로 인코딩 됩니다.
URL만 변환:
$string = auto_link($string, 'url');
이메일만 변환:
$string = auto_link($string, 'email');
세번째 파라미터는 링크를 새창으로 열것인지를 결정합니다. 값은 TRUE 나 FALSE 입니다:
$string = auto_link($string, 'both', TRUE);
url_title()
문자열을 입력받아 사람이 읽기쉬운 URL 문자열을 생성해줍니다. 만약 블로그를 만드는데 글제목을 url 로 사용하고자 할경우 유용하겠죠 . 예:
$title = "What's wrong with CSS?";
$url_title = url_title($title);
// 결과: whats-wrong-with-css
두번째 파라미터는 단어 구분자를 지정할때 사용합니다. 기본값은 대쉬(-) 입니다. 옵션은: dash, 혹은 underscore:
$title = "What's wrong with CSS?";
$url_title = url_title($title, 'underscore');
// Produces: whats_wrong_with_css
prep_url()
이함수는 URL 에서 http:// 이 빠진경우에 추가해주는 기능을 합니다. URL 문자열을 다음과같이 넘겨주세요:
$url = "example.com";
$url = prep_url($url);
redirect()
"header redirect"를 수행합니다. 전체 url을 지정해도 되지만,사이트 내부에서 이동할경우 ,컨트롤러의 URI 세그먼트만 지정해주면, 함수가 Url을 알아서 생성합니다.
옵션인 두번째 파라미터는 "location" 메소드(기본값)이나 "refresh" 메소드 중 하나를 선택할 수 있도록 해줍니다. Location 은 더 빠르게 동작하나, 윈도우 서버에서는 문제가 발생할 수 있습니다. 옵션이 세번째 파라미터로 특정 HTTP 응답(Response)코드를 지정할 수 있습니다 - 검색엔진을 위해서 301 리디렉트를 생성할경우 사용하실 수 있습니다. 기본응답코드는 302 입니다. 세번째 파라미터는 'location' 리디렉트를 사용할 경우에만 사용가능합니다. 예:
if ($logged_in == FALSE)
{
redirect('/login/form/', 'refresh');
}
// with 301 redirect
redirect('/article/13', 'location', 301);
참고: 이 함수는 서버헤더(headers)를 이용하기 때문에 ,이 함수를 사용하기전에 어떠한 출력도 브라우저로 전송되어서는 안됩니다.
참고: 헤더의 상세한 설정을 위해서는,출력라이브러리의 set_header() 함수를 사용하시면 됩니다.