CodeIgniter 完美解决URL含有中文字符串,codeigniterurl
CodeIgniter 完美解决URL含有中文字符串,codeigniterurl
codeIgniter默认的配置下是不允许URL中包含非ASCII字符的,如果URL中含非ASCII字符,那么CI会毫不客气的抛出错误。本文章向码农介绍CodeIgniter 如何解决URL含有中文字符串。
你 可能会说,那我把这个URL使用函数urlencode一下呢?不行。因为Web Server会在接收到一个被urlencode的URL后自动将其decode,然后在PHP里得到的这些字符串转换成他原来所代表的含义,并使用 Web Server自己的URL编码字符集(IIS6 中文版是GBK,Apache 2.2是UTF-8)传送给应用程序,这就使得CI得到的URL已经是一个解码过的,无论你有没有对URL进行urlencode,浏览器在发出请求时会 自动检测,若没有,则会自动进行编码。所以,手动的进行urlencode并不能解决问题。那么我们应该怎么做来解决这个问题呢?
对于CI这种框架,用到现在,我的观点是尽量不要去修改它,而是去扩展他,CI提供了很好的扩展机制,我们只需要在application/core/下(2.0版本以前的为application/libraries/)增加一个文件MY_URI.php,其内容为:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_URI extends CI_URI { /** * 自定义的url过滤函数 * * @access private * @param string * @return string */ function _filter_uri($str) { if ($str != '' AND $this->config->item('permitted_uri_chars') != '') { $str = urlencode($str); if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str)) { exit('The URI you submitted has disallowed characters.'); } $str = urldecode($str); } return $str; } }
我覆盖了原来CI_URI中的_filter_uri方法,这样就可以使得中文的URL通过检测。但是,如果URL里有空格, 也不行了,怎么办呢?原来,urlencode会将空格转换成+,而CI的默认配置中是不允许+出现在URL里的,OK,把
$config ['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
改成
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\+\-';
就可以了。
或者
第一步把config.php 中的
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
替换成
$config['permitted_uri_chars'] ='a-z 0-9~%.:_-u4e00-u9fa5';
面所有的操作我们都做完了,但是接下来你可能又遇到了新的问题,那就是url中得到的中文信息是乱码,不知道在你的服务器上会不会遇到该问题,但是我遇到了(IIS)。但是在本地是正常的,本地用的是apache。
好,我在程序中,把$_SERVER['REQUEST_URI']打印出来,发现它就是乱码的,苦思冥想,这是怎么回事?这就说明在我得到uri中的参数之前,就已经被编码了,好,我们使用iconv解码:
iconv("gb2312","UTF-8",$uri);
现在打印出来看看,好了,原来的中文参数打印出来了,是正确的。
这个问题解决了,但是还是有一个疑问,url为什么是gb2312编码的呢,如果在我的程序中使用(我采用的是utf-8编码),还需要转换为utf-8编码,是不是和web服务器是有关系的呢,希望大家能够帮忙解答。
以上这篇CodeIgniter 完美解决URL含有中文字符串就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持帮客之家。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Call of Duty Warzone は新しくリリースされたモバイル ゲームです。多くのプレイヤーは、このゲームの言語を中国語に設定する方法に非常に興味があります。実際、それは非常に簡単です。プレイヤーは中国語の言語パックをダウンロードするだけで、その後、次のことができます詳しい内容はこちらの中国語設定方法紹介で解説していますので、一緒に見ていきましょう。モバイル ゲーム Call of Duty: Warzone に中国語を設定する方法 1. まずゲームに入り、インターフェースの右上隅にある設定アイコンをクリックします。 2. 表示されるメニューバーで、[ダウンロード]オプションを見つけてクリックします。 3. このページの[SIMPLIFIEDCHINESE](簡体字中国語)を選択して、簡体字中国語のインストールパッケージをダウンロードします。 4. 設定に戻ります

中国語での VSCode セットアップ: 完全ガイド ソフトウェア開発では、Visual Studio Code (略して VSCode) が一般的に使用される統合開発環境です。中国語を使用する開発者は、VSCode を中国語インターフェイスに設定すると、作業効率が向上します。この記事では、VSCode を中国語インターフェイスに設定する方法を詳しく説明し、具体的なコード例を示す完全なガイドを提供します。ステップ 1: 言語パックをダウンロードしてインストールします。VSCode を開いた後、左側の

Excelスプレッドシートは現在多くの人が使っているオフィスソフトの一つですが、パソコンがWin11なので英語のインターフェースが表示されていて、中国語のインターフェースに切り替えたいけど操作方法が分からないという方もいらっしゃいます。この問題を解決するには、この問題エディターがすべてのユーザーの質問に答えるためにここにあります。今日のソフトウェア チュートリアルで共有されるコンテンツを見てみましょう。 Excel を中国語に切り替えるためのチュートリアル: 1. ソフトウェアを起動し、ページ上部のツールバーの左側にある [ファイル] オプションをクリックします。 2. 以下の選択肢から「オプション」を選択します。 3. 新しいインターフェースに入ったら、左側の「言語」オプションをクリックします。

『WWE2K24』はVisual Conceptsが制作し、2024年3月9日に正式リリースされたレーシングスポーツゲームです。このゲームは非常に高く評価されており、多くのプレイヤーが中国語版がリリースされるかどうかに熱心に興味を持っています。残念ながら、今のところ「WWE2K24」は中国語版をまだローンチしていない。 wwe2k24 は中国語になりますか? 回答: 中国語は現在サポートされていません。 Steam中国地域におけるWWE2K24の標準版の価格は199元、デラックス版は329元、記念版は395元です。ゲームには比較的高い構成要件があり、プロセッサ、グラフィックス カード、または実行メモリに関して特定の基準があります。公式推奨構成と最小構成の紹介:

PHP で書かれた txt ファイルの中国語文字化けを解決するヒント. インターネットの急速な発展に伴い、PHP は広く使用されているプログラミング言語として、ますます多くの開発者に使用されています。 PHP 開発では、中国語のコンテンツを記述する txt ファイルなどのテキスト ファイルの読み取りと書き込みが必要になることがよくあります。ただし、エンコード形式の問題により、書かれた中国語が文字化けして表示されることがあります。この記事では、PHPでtxtファイルに書き込まれた中国語の文字化けを解決するテクニックと、具体的なコード例を紹介します。 PHP、テキストの問題分析

Google Chromeで中国語を英語に変更するにはどうすればよいですか?友人の中には、Google Chrome を英語に設定して、使用中に継続的に英語力を向上させたいと考えている人もいます。では、どうやって英語に設定すればいいのでしょうか? Google Chromeはデフォルトでは中国語になっていますが、以下ではGoogle Chromeの言語を英語に設定する方法を紹介しますので、見てみましょう。設定手順: 1. 下図に示すように、[Google Chrome]を開きます。 2. 以下の図に示すように、Google Chrome インターフェースの右上隅にある [3 つの点] メニューをクリックします。 3. メニューページに入ったら、次の図に示すように [設定] を見つけます。 4. 設定ページに入ったら、次の図に示すように、[言語]オプションをクリックします。 5. 次の図に示すように、言語インターフェイスで [言語の追加] を選択します。

PHPでint型をstring型に変換する方法を詳しく解説 PHPの開発では、int型をstring型に変換する必要に遭遇することがよくあります。この変換はさまざまな方法で実現できますが、この記事では、読者の理解を深めるために、具体的なコード例とともに、いくつかの一般的な方法を詳しく紹介します。 1. PHP の組み込み関数 strval() を使用する PHP には、さまざまな型の変数を文字列型に変換できる組み込み関数 strval() が用意されています。 int型をstring型に変換する必要がある場合、

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。
