ホームページ php教程 php手册 実践的なヒント: PHP で中国語の文字列をインターセプトする際の問題

実践的なヒント: PHP で中国語の文字列をインターセプトする際の問題

Jun 21, 2016 am 09:10 AM
start title unset

ヒント|質問|中国語|文字列

次のコードは、GB2312 エンコードに使用されます。PHP では、中国語の文字列をインターセプトするのが問題です。その解決策は、文字化けを避けるために、値が 128 以上であるかどうかに基づいてそれが 2 バイト文字であるかどうかを判断することです。ただし、中国語と英語の混合、特殊記号などの問題は常にあります。ここで、参考のためにより包括的なものを書きます:

プログラムの説明:

1 len パラメータは漢字に基づいており、1len は次のとおりです。形式上、英語の 2 文字に相当します。見た目が良くなります

2. マジックパラメータが false に設定されている場合、中国語と英語は同等に扱われ、絶対的な文字数が取得されます

3。 htmlspecialchars() でエンコードされた文字列

4. GB2312 でのエンティティ文字モード (𖰰) の処理

プログラム コード:

<ccid_code>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;$blen = 0;$realnum = 0;for($i=$start;$i<STRLEN($TITLE);$I++) if(ord($cur) }else{ } $ctype="0;" ++; $blen { if($magic) $realnum +="4;" $i $length $cstep="0;" i?,substr($title,$i,8),$match)) &#(\d+); if(preg_match(? else $alen ?&#039;?) if(substr($title,$i,6)="=" ?"?) ?&?) if(substr($title,$i,5)="=" ?>?) if(substr($title,$i,4)="=" ?<?) ?&?) if($cur="=" $cur="substr($title,$i,1);">=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 -= $cstep;     break;    }else{     break;    }   }  }else{   if($realnum == $len) break;  }}unset($cur);unset($alen);unset($blen);unset($realnum);unset($ctype);unset($cstep);return substr($title,$start,$length);}</ccid_code>
ログイン後にコピー



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

docker start が起動できない場合はどうすればよいですか? docker start が起動できない場合はどうすればよいですか? Oct 21, 2022 pm 03:43 PM

Docker の起動に失敗した場合の解決策: 1. 実行ステータスを確認し、「echo 3 &gt; /proc/sys/vm/drop_caches」コマンドを使用して占有メモリを解放します; 2. 「$netstat -nltp|grep .. .」を使用します。 「」コマンドでポートが占有されているかどうかを確認します。オンライン後に占有されていることが判明した場合は、空いているポートに変更して再起動してください。

タイトルの意味は何ですか タイトルの意味は何ですか Aug 04, 2023 am 11:18 AM

タイトルは、Web ページのタイトルを定義する意味です。タグ内にあり、ブラウザのタイトル バーに表示されるテキストです。タイトルは、検索エンジンの最適化と Web ページのユーザー エクスペリエンスにとって非常に重要です。 HTML Web ページを作成するときは、より多くのユーザーがクリックして閲覧できるように、関連するキーワードと魅力的な説明を使用してタイトル要素を定義することに注意する必要があります。

ノードの起動でエラーが報告された場合の対処方法 ノードの起動でエラーが報告された場合の対処方法 Dec 29, 2022 pm 01:55 PM

ノード起動エラーの解決策: 1. ターミナルで直接「node xx.js」を実行します; 2. 起動スタートアップ項目「scripts」を追加します: {"test": "echo \"Error: no test specific\" && exit 1 " ,"start":"node service.js"}"; 3. 「npm start」を再実行します。

HTMLのタイトルの意味は何ですか? HTMLのタイトルの意味は何ですか? Mar 06, 2024 am 09:53 AM

HTML のタイトルには、Web ページのタイトル タグが表示されます。これにより、閲覧者は現在のページの内容を知ることができるため、各 Web ページには個別のタイトルが必要です。

Javaスレッドでstartメソッドとrunメソッドを使用する方法 Javaスレッドでstartメソッドとrunメソッドを使用する方法 Apr 20, 2023 am 08:58 AM

start メソッドと run メソッド $start()$ メソッドは、スレッドを開始するために使用されます。この時点では、スレッドは準備完了 (実行可能) 状態にあり、実行されていません。$cpu$ タイム スライスが取得されると、$ run()$メソッドの実行が開始されます。 $run()$ メソッドを直接呼び出すと、クラス内のメソッドが呼び出されるだけであり、このメソッドは基本的に現在のスレッドで実行されるため、$start()$ メソッドを使用して $run()$ を呼び出すことによってのみ実現できます。メソッド。真のマルチスレッド。サンプルコード@Slf4j(topic="c.Test4")publicclassTest4{publicstaticvoidmain(Strin)

Javaスレッドでの開始と実行の違いは何ですか Javaスレッドでの開始と実行の違いは何ですか Apr 20, 2023 pm 12:37 PM

publicclassTest1extendsThread{@Overridepublicvoidrun(){while(true){System.out.println(Thread.currentThread().getName());}} publicstaticvoidmain(String[]args){Test1test1=newTest1();test1.run() ;//出力結果 maintest1.start();//出力結果 Thread-0}}1.startstart は、

PHPでunset関数を使用して配列要素を削除する方法 PHPでunset関数を使用して配列要素を削除する方法 Jun 26, 2023 am 11:29 AM

PHP は、多くの便利な機能を提供する人気のあるサーバー側プログラミング言語であり、そのうちの 1 つは配列の操作です。 PHP 配列を使用する場合、要素を削除する必要がある場合、unset() 関数を使用できます。 unset() 関数は、変数を削除するために PHP で使用される関数であり、配列内の要素を削除するために使用できます。構文は次のとおりです。 unset(array$array[,mixed$key1[,mixed$key2[,mixed

PHP で session_start 関数を使用してセッションを開始する方法 PHP で session_start 関数を使用してセッションを開始する方法 Jun 26, 2023 pm 01:33 PM

session_start() 関数は、PHP でセッションを開く関数の 1 つです。セッションは Web 開発において非常に一般的なテクノロジであり、セッションの基礎は、ユーザーが Web サイトにアクセスしたときに一意のセッション ID を割り当て、その後のアクセス時にこのセッション ID を使用してユーザーを識別することです。セッションは、ユーザーのログイン ステータス、ショッピング カートの内容、その他のユーザー情報を保存するために使用できます。また、Web サイト上の一部の機能に対する権限制御を実装するために使用することもできます。 PHP でセッションを開く方法は非常に簡単で、sess を使用するだけです。

See all articles