URL 輔助函數
URL 輔助函數用來處理包含網址的資料內容。
載入 URL 輔助函數
使用下列的程式碼載入此輔助函數( 說明器 ):
$this->load->helper('url');
下列為可以使用的函數:
site_url()
回傳您在 config.php 檔案中所定義的網站 URL。當你傳入任何 URI segments 到函數,index.php (或是 config.php 設定檔案裡定義的 index_page) 將會自動將 URI segments 及 url_suffix 增加到 URL 後面。
任何時候要建立一個本地的 URL時,建議你使用本函數,以方便在URL改變事件中,您的頁面變得更可擕性。
做為參數傳遞給該函數的 URI 段可以是一個字串,也可以是一個陣列。下面是一個字串的例子:
echo site_url("news/local/123");
上面的例子會傳回類似:http://example.com/index.php/news/local/123 的URL。
這是一個以陣列形式傳遞 URI 段的例子:
$segments = array('news','local','123');
echo site_url($segments);
base_url()
取得在 config.php 中設定的 base_url 值,範例:
echo base_url();
此函數回傳值就像 site_url 函式,但是不包含後面 index_page 或 url_suffix 字串。
就如同 site_url 函數,您可以提供字串或者是陣列。底下是字串範例:
echo base_url("blog/post/123");
上述例子將會回傳字串:http://example.com/blog/post/123
這函數非常有用,並非像是 site_url(),您可以提供檔案路徑,像是 image 路徑或者是 CSS 路徑,範例:
echo base_url("images/icons/edit.png");
上述例子將會回傳字串:http://example.com/images/icons/edit.png
current_url()
傳回目前正在查看的頁面的完整URL(包括URL段)。
uri_string()
傳回任何包含了此函數的頁面的URI段。例如,你的URL是這樣子:
http://some-site.com/blog/comments/123
該函數會傳回:
blog/comments/123
index_page()
傳回在 config.php 中設定的 index_page。例如:
echo index_page();
anchor()
建立基於您的本地網站 URL 的標準 HTML 錨連結:
<a href="http://example.com">Click Here</a>
這個標記有三個可以選擇的參數:
anchor(uri segments, text, attributes)
第一個參數包含你想附加到URL的任何段,像上面的site_url() 函數一樣,段可以是字串或陣列。
注意: 如果你建立在應用程式內部的鏈結沒有包含基本URL(http://...) ,這個參數會從你配置檔資訊中自動載入,包括只是你希望附加到URL的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() 函數相同,不同的是anchor_popup()會在新視窗開啟鏈結。 你可以在第三個參數中指定JavaScript視窗屬性來控制視窗的開啟方式。如果第三個參數沒有設定,它會直接根據你的瀏覽器設定開啟新視窗。以下是一個屬性設定的例子:
$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()
建立標準HTML電子郵件鏈結的使用範例
echo mailto('me@my-site.com', 'Click Here to Contact Me');
像上列的 anchor() 函數一樣,你可以用第三個參數設定屬性。
safe_mailto()
用法和上面的函數相同,不同的是它用JavaScript編寫了基於順序號碼不易識別的mailto版本標籤,以便阻止email位址被垃圾郵件截獲。
auto_link()
自動把包含URL和email位址的字串轉換成鏈結。例如:
$string = auto_link($string);
第二個參數決定URL和email是否都轉換或只有其中一個轉換,如果參數沒有指定預設值是兩個都轉換,電子郵件連結編碼為 safe_mailto() 如上所示。
只有轉換 URLs:
$string = auto_link($string, 'url');
只有轉換 Email addresses:
$string = auto_link($string, 'email');
第三個參數是用來表示點選是否開啟新視窗。此參數只能用布林表示值 TRUE or FALSE (boolean):
$string = auto_link($string, 'both', TRUE);
url_title()
使用字串作為輸入,並建立一個友好的 URL 字串。例如:你有一個blog,而且你想在URL中使用項目的標題,就可以使用這個函數。 參考範例:
$title = "What's wrong with CSS?";
$url_title = url_title($title);
// 產生: whats-wrong-with-css
第二個參數指定單字之間的分隔符號。有:破折號'-', 或者 底線'_'兩種選項,預設值使用破折號'-':
$title = "What's wrong with CSS?";
$url_title = url_title($title, '_');
// Produces: Whats_wrong_with_CSS
第三個參數為確定建立的 URL 字串是否要全部轉換為小寫字元。預設值為不是。有布林值 TRUE/FALSE :
$title = "What's wrong with CSS?";
$url_title = url_title($title, '_',TRUE);
// 處理: whats_wrong_with_css
prep_url()
這個函數可以附加上http://在沒有http://的URL中,將 URL 字串傳遞給函數:
$url = "example.com";
$url = prep_url($url);
redirect()
Does a "header redirect" to the URI specified. If you specify the full site URL that link will be build, but for local links simply providing the URI segments to the controller you want to direct to will create the link. The function will build the URL based on your config file values.
你可以設定第二個參數為 location 定位操作(預設)或者 refresh 刷新操作。定位操作比刷新操作執行速度快,但是在Windows伺服器上它將有時被認為是一個錯誤操作。可選擇的第三個參數允許你送一則具體的HTTP 回應代碼 - 這可能使用在例如建立301把目的重新導向給搜索引擎。預設回應代碼是302。第三個參數只有'位址'可提供更改方向,而不'刷新'動作。範例:
if ($logged_in == FALSE)
{
redirect('/login/form/', 'refresh');
}
// with 301 redirect
redirect('/article/13', 'location', 301);
注意: 由於此函數需要處理header檔頭,必須使用在任何輸出給瀏覽器的內容之前。
注意: 注意:對非常精密對應的控制來說,你應該使用輸出函數的 set_header() 函數。