目次
PHPで文字列をインターセプトするためにsubstr()を使用すると中国語の文字化けが発生する場合はどうすればよいですか?
ホームページ バックエンド開発 PHPチュートリアル PHP で substr() を使用して文字列をインターセプトするときに中国語の文字化けが表示される場合はどうすればよいですか?_PHP チュートリアル

PHP で substr() を使用して文字列をインターセプトするときに中国語の文字化けが表示される場合はどうすればよいですか?_PHP チュートリアル

Jul 12, 2016 am 09:07 AM
php substr 文字化け インターセプト文字列

PHPで文字列をインターセプトするためにsubstr()を使用すると中国語の文字化けが発生する場合はどうすればよいですか?

PHPのプログラム開発では、情報のリストを出力する場合など、文字列のインターセプト操作が頻繁に行われます。 、タイトルは長すぎてはならず、記事を印刷する 要約するときは、一連の文字列インターセプト操作も実行する必要があります。これらの要件に遭遇した場合、それを実現するために substr() メソッドを使用することをよく考えますが、すべて英語の文字列をインターセプトするには substr() の方が適しています。

ただし、文字列に中国語の文字が含まれている限り、PHP substr 中国語の文字化けが発生する可能性があります。これは、中国語の UTF-8 エンコーディングでは、各漢字が 3 バイトを占有するのに対し、GB2312 は 2 バイト、英語は 1 バイト、およびインターセプト数字が占有されるためです。は正確ではありません。substr() は中国語の文字を強制的に半分に「切断」し、壊れた文字が次の文字を引っ張って単語を作成するため、PHP substr の中国語の文字化けが表示されます。

substr --- 文字列の一部を取得します

構文: string substr (string string, int start [, int length])

説明:

substr() は、パラメータ start と length で指定された文字列の一部を返します。

start が正の数の場合、返される文字列は string の開始文字から始まります。

例:

リーリー

start が負の数の場合、返される文字列は文字列の末尾の開始文字から始まります。

例:

リーリー

パラメータの長さが指定されており、それが正の数である場合、返される文字列は先頭からの長さの文字になります。
length パラメーターが指定され、それが負の数値である場合、返される文字列は、文字列の末尾から length 番目の文字で終了します。

例:

リーリー

英語は問題ありません。中国語でテストします

リーリー

文字をインターセプトした結果は、明らかに私たちが望んでいる結果ではありません。このような中国語の PHP substr の状況により、プログラムが正常に実行できなくなる可能性があります。主な解決策は 2 つあります:

1. mbstring拡張ライブラリのmb_substr()を使用してインターセプトすると文字化けが発生しません。

関数 mb_substr()/mb_strcut() を使用できます。mb_substr()/mb_strcut() の使用法は、mb_substr()/mb_strcut の最後にパラメータを 1 つ追加する必要があることを除いて、substr() と似ています。ただし、ほとんどのサーバーは php_mbstring.dll を開きません。php.ini で php_mbstring.dll を開く必要があります。

リーリー

最後のエンコーディングパラメータが指定されていない場合、3バイトが1つの漢字として使用されます。これはUTF-8エンコーディングの特性であり、UTF-8文字セットの記述が追加されると、1単語単位でインターセプトされます。 。

ご利用の際は、PHPファイルのエンコードとWebページ表示時のエンコードにご注意ください。この mb_substr メソッドを使用するには、文字列のエンコードを事前に知っておく必要があります。エンコードがわからない場合は、mbstring ライブラリにも文字列のエンコードをチェックするための mb_check_encoding が用意されていますが、まだ完全ではありません。 。

PHP にはいくつかの文字列インターセプト関数が付属しており、その中で、substr と mb_substr がよく使用されます。前者が中国語を処理する場合、GBK は 2 長さ単位、UTF は 3 長さ単位になります。後者がエンコーディングを指定すると、1 つの中国語文字が 1 長さ単位になります。

substr は時々中国語の 1/3 または半分が切り取られ、文字化けして表示されます。比較的、mb_substr の方が使いやすいです。ただし、mb_substr は使いにくい場合があります。たとえば、小さな画像の簡単な情報を表示したい場合は、漢字 5 文字がちょうどいいです。それ以上の場合は、最初の 4 文字を切り取って「...」を追加するだけで問題ありません。中国語ですが、英語や数字を処理する場合、このインターセプトは短すぎます。

2 番目に、インターセプト関数を自分で作成しますが、効率は mbstring 拡張ライブラリを使用するほど高くありません。以下は、UTF-8 でエンコードされた文字列をインターセプトする ecshop の関数です。

リーリー

この記事の説明はこれですべてです。上記のコードも非常に簡単です。わからないことがあれば、メッセージを残してください。できるだけ早く。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1063227.html技術記事 PHP で文字列をインターセプトするために substr() を使用するときに中国語の文字化けが発生する場合はどうすればよいですか? ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles