ホームページ >バックエンド開発 >PHPチュートリアル >PHP は mb_string 関数ライブラリを使用して Windows に関連する中国語の文字を処理し、Win 環境で PHP Mb_String メソッドを有効にします。_PHP チュートリアル

PHP は mb_string 関数ライブラリを使用して Windows に関連する中国語の文字を処理し、Win 環境で PHP Mb_String メソッドを有効にします。_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:05:07838ブラウズ

PHP は mb_string 関数ライブラリを使用して Windows に関連する中国語の文字を処理し、Win 環境で PHP Mb_String メソッドを有効にします

PHP は mb_string 関数ライブラリを使用して Windows に関連する中国語の文字を処理します

昨日、以前にダウンロードした大量のファイルをバッチ処理し、正規表現を使用してファイル内の主要な内容を照合し、それらを一元的に処理したいと思いました。ファイルを操作するときに発生する問題は、Windows オペレーティング システムのエンコーディングの問題です。

Windows (もちろん中国語版) では、ファイル名とファイルの内容が gbk でエンコードされていることは誰もが知っています。開発プロセス中、IDE のエンコードは UTF-8 です (その理由などについてはここでは説明しません) 、

エンコーディングを同じに変換する方法のみを考慮してください)、そのため、私が書いた UTF-8 エンコードされた正規パターン文字列内の中国語は、gbk エンコードされたファイル内で正しく照合できません。

最初は何も分かりませんでした。PHP スクリプト ファイルのエンコードを GBK に変更してみましたが、これでも機能しました。しかし、この方法は低すぎると思い、ニーズを満たすことができる PHP の関数を探しました。

今回、Windowsでファイル名を処理するときによく使っていた関数iconv()を思い出しました。その関数プロトタイプは次のとおりです。 リーリー

私たちがよく使うのは:

リーリー

ファイル名を加工するには、内容を変更せずにファイル名をgbkからUTF-8に変更します。

手動翻訳を追加:

出力文字列 $out_charset の後に //TRANSLIT を追加すると、つまり $out_charset='utf-8//TRANSLIT' になり、UTF-8 に変換できない文字が見つかったときに、プログラムは自動的にそれを文字列に置き換えます。類似した文字を含む UTF


出力文字列 $out_charset の後に //IGNORE を追加すると、つまり $out_charset='utf-8//IGNORE' となり、UTF-8 に変換できない文字が見つかったときに、プログラムはこの文字を自動的にスキップします。


何も追加しない場合、UTF-8で置換できない文字に遭遇した場合に置換が中断されます。

ただし、この関数を使用して処理すると、結果は次のようになります:

これは、iconv() 関数が処理できる最大文字数が通常のファイル名のサイズである 64 文字しかなく、ファイルの内容が明らかに 64 文字を超えていることを意味します。

他に方法がないので、他の機能を再度探す必要がありました。

mb_string 関数ライブラリを発見するまでは、この関数ライブラリは通常、phpinfo() で見つけることができます。

mb_string 関数には mb_convert_encoding() 関数があり、文字列のエンコーディングを変更できます。その関数のプロトタイプは次のとおりです。 リーリー

基本的なプロトタイプは iconv() 関数に似ていますが、出力関数の接尾辞が変更されていないことと、文字列の長さに明確な制限がない点が異なります。

$from_encoding はオプションであり、ソース エンコーディングを自動的に識別できることがわかります。

トランスコードできない文字を正確に見つけることができず、トランスコードできない文字をどのように処理するかわからないためです。

ファイル全体が mb_convert_encoding() 関数によって処理され、問題は正常に解決されました。

最後に、mb_string 関数ライブラリを紹介します。その正式名は、Multibyte String です。そのメソッドの多くは、元の関数の前に「mb_」が追加されています。元の関数の関数、これらの関数、さらにオプションのパラメーター $encoding をオプションのパラメーターの最後に追加します。このパラメーターは、関数が文字列を処理するために使用するエンコード方法を指定できます。

たとえば、strpos() 関数は、別の文字列内の文字列の位置を見つけます。

strpos("Welcome to visit","Ask",0) は、スクリプトが UTF-8 エンコードされており、文字列を UTF-8 エンコードに変換した後、各中国語文字が 3 文字を占めるため、結果 12 を返します。

mb_strpos() 関数では、mb_strpos("Welcome to visit", "Ask", 0, 'utf-8') は 4 を返し、文字列が UTF-8 に変換されたかのように実行されます。

そして mb_strpos("ようこそ","質問",0,'gbk') は 6 を返します

もちろん、さらにユニークな機能もあります~

以下では、Windows環境でPHP Mb_Stringを有効にする方法を紹介します 数日前、Phpプログラムを実行し、文字エンコーディングを変換する必要がありましたが、サーバーを確認したところ、Mb_String拡張子がサポートされていないと言われました。ファイルphp_mbstring.dllがPhp拡張ライブラリに含まれていることを確認しました。

以下はそれを開く方法を説明します

1. ファイル php_mbstring.dll が Windows/system32 にあることを確認します。ない場合は、Php インストール ディレクトリ拡張子から Windows/system32 にコピーします。

2. Windows ディレクトリで php.ini を見つけ、編集のために開き、mbstring.dll を検索して、

を見つけます。 ;extension=php_mbstring.dll


次に、前にある「;」記号を削除して、コンポーネントのサポートをオンにします

3. PHP サービスを再起動します (そうでない場合は、コンピューターを再起動できます)

4.完了

www.bkjia.com本当http://www.bkjia.com/PHPjc/1070279.html技術記事 PHP は mb_string 関数ライブラリを使用して Windows に関連する中国語の文字を処理し、Win 環境で PHP Mb_String メソッドを有効にします。 PHP は mb_string 関数のライブラリを使用して Windows に関連する中国語の文字を処理します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。