PHP_PHP チュートリアルで中国語と英語が混在した文字列の長さを取得する方法
今夜フレームワークのフォーム検証クラスを書いていたとき、特定の文字列の長さが指定された範囲内にあるかどうかを判断する必要があり、当然、PHP の strlen 関数を思い出しました。
$str = 'Hello world!';
echo strlen($str) // 出力12
; ただし、PHPに付属の関数では、strlen と mb_strlen は両方とも長さは、文字列が占めるバイト数を計算することによって計算されます。エンコード条件が異なると、中国語が占めるバイト数も異なります。 GBK/GB2312 では中国語の文字は 2 バイトを占めますが、UTF-8 では中国語の文字は 3 バイトを占めます。
$str = 'Hello, world! ';
echo strlen($str); // GBK または GB2312 では 12 を出力、UTF-8 では 18 を出力
文字列の長さを判断するときは、文字列の占有率ではなく、文字数を判断する必要があることがよくあります。文字列 UTF-8 でのこの PHP コードのようなバイト数:
$name = 'Zhang Gengchang';
$len = strlen($name) ;
/ / UTF-8 では 3 つの漢字が 9 バイトを占めるため、FALSE を出力します
if($len >= 3 && $len <= 8){
echo 'TRUE';
}else{
echo 'FALSE ';
}
では、中国語の文字列の長さを取得する便利で実用的な方法はあるのでしょうか?通常のルールを使用して中国語の文字数を計算し、GBK/GB2312 エンコードで 2 で割って、UTF-8 エンコードで 3 で割って、最後に中国語以外の文字列の長さを加算することもできますが、これは面倒すぎます。
WordPress のこのようなコードは、以下を参照してください:
$str = 'Hello, world! ';
preg_match_all('/./us', $str, $match);
echo count($match[0]); // 出力 9
目的は、正規表現を使用して文字列を単一の文字に分割することです。 , そして、count を直接使用して、一致した文字の数を計算します。これが目的の結果です。
ただし、上記のコードではGBK/GB2312の中国語文字列をUTF-8エンコーディングで扱うことができないため、GBK/GB2312の中国語文字は2文字として認識され、計算される中国語の文字数が2倍になるため、このようなことを考えました。方法:
$tmp = @iconv('gbk', 'utf-8', $str);
if(!empty($tmp)) {
$str = $tmp;
}
preg_match_all('/./us', $str, $match);
echo count($match[0]);
GBK/GB2312 および UTF-8 エンコーディングと互換性あり. 少量のデータテストは合格しましたが、それが完全に正しいかどうかはまだ確認されていません。誰かが私にアドバイスをくれることを願っています。
上記の目的は、フレームワークが複数のエンコード形式と互換性があることですが、一般的に日常の開発では、プロジェクトがどのエンコードであるかをすでに決定できるため、次の関数を使用して文字列の長さを簡単に取得できます:
int iconv_strlen ( string $str [, string $charset = ini_get("iconv.internal_encoding") ] )

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









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

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

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

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

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

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