PHP での中国語文字列のインターセプトに関する問題
次のコードは GB2312 エンコードに使用されます。PHP では中国語の文字列をインターセプトするのが問題です。その解決策は、文字化けを避けるために、値が 128 以上であるかどうかに基づいてそれが 2 バイト文字であるかどうかを判断することです。ただし、中国語と英語の混合、特殊記号などの問題は常にあります。ここで、参考のために、より包括的なものを書きます。
プログラムの説明:
1。
2 の形式で見栄えを良くするために、中国語の文字に基づいており、1len は英語の 2 文字に相当します。マジック パラメータが false に設定されている場合、中国語と英語は同等に扱われ、その絶対数は文字は取得されます
3. htmlspecialchars() でエンコードされた文字列に特に適しています
4. GB2312 () のエンティティ文字モードを正しく処理できます
プログラムコード:
function FSubstr($title, $start,$len="",$magic=true)
{
/**
* powered by Smartpig
* mailto:d.einstein@263.net
*/
$length = 0;
if($len == " ") $len = strlen($title);
//開始位置が間違っていると判断
if($start > 0)
{
$cnum = 0;
for($i=0;$i<$start;$i )
{
if(ord(substr($title,$i,1) )) >= 128) $cnum ;
}
if($cnum%2 != 0) $start--;
unset($cnum); >
if(strlen($title)< ;=$len) return substr($title,$start,$len);
$alen = 0; 🎜>
$realnum = 0;
for($i=$start;$i
$ctype = 0; > $cstep = 0;
$cur = substr($title,$i,1);
if($cur == "&")
{
if(substr($title, $i,4) == "<")
{
$cstep = 4;
$i = 3;
($magic)
{
$ alen ;
}
}
else if(substr($title,$i,4) == ">")
{
$cstep = 4;
$i = 3;
if($magic)
{
$alen ; }
}
else if(substr ($title,$i,5) == "&")
{
$cstep = 5;
$i = 4;
$realnum ;
if($magic)
{
$alen ;
}
else if(substr($title,$i) ,6) == """)
{
$cstep = 6;
$length = 6;
$i = 5;
$realnum ;
if($magic )
{
$alen ;
}
}
else if(substr($title,$i,6) == "'")
{
$cstep = 6;
$i = 5;
if($magic)
{
$alen ; }
else if(preg_match("/& #(d );/i",substr($title,$i,8),$match))
{
$cstep = strlen($match [0]);
$length = strlen($match[0])-1;
$realnum ; )
{
$blen
$ctype = 1;
}
}else{
if(ord($cur)>>=128)
{
$cstep = 2;
$length = 2;
$i = 1;
$realnum ;
if($magic)
{
$blen ;
$ctype = 1;
}
}else{
$cstep = 1;
$length =1;
$realnum ;
if($magic)
{
$alen ;
}
}
}
if($magic)
{
if(($blen*2 $alen) == ($len*2)) break ;
if(($blen*2 $alen) == ($len*2 1))
{
if($ctype == 1)
{
$length -= $ cステップ;
休憩;
}else{
休憩;
}
}
}else{
if($realnum == $len) break;
}
}
unset($cur);
設定を解除($alen);
設定を解除($blen);
unset($realnum);
unset($ctype);
設定解除($cstep);
return substr($title,$start,$length);
}

ホット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 のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
