2011-12-12 62 views
-1

我有一個奇怪的問題。我正在做一個像codeigniter一樣的自己的框架,並且我做了一個功能等同於CI的「base_url()」,在我的情況下,它返回一個字符串,如:「http://www.example.com/」。我的問題(我從來沒有聽說過),當我使用我的base_url()函數來鏈接到CSS文件和其他導航。所以,當我在一個視圖中寫道:函數突然返回前面的目錄名稱的完整路徑?

<link rel="stylesheet" type="text/css" href="<?= base_url(); ?>css/style.css" /> 

實際的鏈接應該是:

<link rel="stylesheet" type="text/css" href="http://www.example.com/css/style.css" /> 

我現在的問題是,「串」從函數返回是正確的,當我看看源Chrome和Firefox中的代碼。但是,當我將鼠標懸停在它的鏈接,鏈接到以下網址改爲:

http://example.com/%EF%BB%BFhttp://www.example.com/css/style.css

任何人都可以解釋爲什麼會這樣?

編輯: 我好抱歉,我忘記好處的源代碼BASE_URL():

function base_url($url_arguments = array()){ 
    // Require config fil 
    include(dirname(__FILE__).'/../system/config.php'); 

    // Generate link 
    $return_url = $config['base_url']; // http://www.example.com/ 
    if(count($url_arguments) > 0){ 
    $return_url .= "?"; 
    foreach($url_arguments as $get => $value){ 
     $return_url .= $get."=".$value.'&'; 
    } 
    preg_match("/(.+?)&$/i", $return_url, $matches); 
    $return_url = $matches[1]; 
    } 
    // Return link 
    return ($return_url); 
} 

特典:VIM發現我的同事,一個名爲<feff>標籤中的鏈接前面附加?

+1

你的'base_url()'函數的源代碼是......究竟在哪裏? – DaveRandom

+0

同意,我想看看base_url函數的代碼。也可能是一個編碼問題。 – swatkins

+0

我很抱歉。因爲我對這個問題非常沮喪,所以稍微快了一點。 –

回答

2

EFBBBF是UTF-8 byte order mark。某人已經滑入你的配置變量。編輯配置文件並將其刪除。如果您正在從文件中讀取變量並且它合法,那麼請在代碼中將其修剪掉。

+0

@Thor A. Pedersen嘗試將文件保存爲不含BOM的UTF-8 –

+0

我剛剛完成自我並將Notepad ++(這是我的編輯器)中沒有BOM的UTF-8字符集修復。這解決了這個問題....哦,我的天哪一個混亂的字符集可以給一個網絡程序員:O –

0

我會寫的功能如下:

function base_url ($url_arguments = array()) { 

    // Require config file 
    include(dirname(__FILE__).'/../system/config.php'); 

    // Generate link 
    $return_url = $config['base_url']; 

    // Add query string, if any 
    if (count($url_arguments)) { 
    if (function_exists('http_build_query')) { 
     $return_url .= "?".http_build_query($url_arguments); 
    } else { 
     $qStr = array(); 
     foreach($url_arguments as $key => $value) { 
     $qStr[] = url_encode($key)."=".urlencode($value); 
     } 
     $return_url .= "?".implode('&',$url_arguments); 
    } 
    } 

    // Return link 
    return $return_url; 

} 

注意無謂的正則表達式的損失 - 我懷疑這是在某種程度上造成您的問題。你可以做到這一點,只需$return_url = rtrim($return_url,'&');

+0

爲了記錄,base_url()是本機CodeIgniter的函數。同意你的建議,雖然 –

+0

@DamienPirsy我知道,但問題規定'我做有點像我自己的框架Codeigniter',而不是'我正在使用codeigniter' - 它被錯誤地標記。 – DaveRandom

+0

呃,你是對的,我沒有看過那句話,標籤誤導了我。感謝您清除此問題 –

相關問題