-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 でソース コードを見ると、関数から返される「文字列」が正しいことです。しかし、マウスをその上に置くと、リンクは代わりに次の URL にリンクします。

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>、リンクの前に という名前のタグが追加されていることを発見しましたか?

4

2 に答える 2

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,'&');.

于 2011-12-12T14:52:53.777 に答える