ホームページ バックエンド開発 PHPチュートリアル PHP は中国語の文字列をインターセプトし、指定された文字列が最初に出現した時点でインターセプトし、100 文字をインターセプトします。

PHP は中国語の文字列をインターセプトし、指定された文字列が最初に出現した時点でインターセプトし、100 文字をインターセプトします。

Jun 13, 2016 pm 01:21 PM
key str strpos word

PHP は、指定された文字列が最初に出現した時点で中国語の文字列をインターセプトし、100 文字をインターセプトします。
前述のように、次の 2 つの方法でインターセプトを実行しましたが、結果が間違っていることがわかりました。アドバイスをお願いします。
$word はインターセプトされる文字列、$key_word は指定された部分文字列です
方法 1:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
mb_substr($word,strpos($word,$key_word)/3,100,'utf-8');

ログイン後にコピー


方法 2 :
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$start_key = mb_strpos($word,$key_word);
$start_key = $start_key&gt;0?$start_key:0;
mb_substr($word,$start_key,100,'utf-8');

ログイン後にコピー


-----解決策-------
文字幅をインターセプトする非常に便利な関数 mb_strimwidth($str, 0, 80, '', 'utf8') を見つけました
------解決策----------------------
汗っかき、汗っかきな人コーディングを理解する 書かれたコードは本当に煩わしいものです。

覚えておいてください、strstr/strpos はバイトごとの比較に使用されます。 GBK/UTF8 の場合、GBK/UTF8 の非 ASCII 文字の 1 バイトの 7 番目のビットが 1 であるため、特定の状況下でも正常に動作しますが、GBK コードでは 2 つの 2 バイト文字が含まれるため問題が発生しやすくなります。バイトのスペルが不正確な一致を引き起こす可能性があります。

MB はエンコーディングを認識する関数であるため、渡される数値と返される数値はバイト数ではなく文字数です。

最初のコードで strpos を使用しましたが、utf8 エンコーディングが OK であれば、正直に言うと残りは機能しません。 UTF8 のことは忘れてください。文字はすべて 3 バイトであると仮定します。 。 。これは間違いです。

2 番目のコードははるかに信頼性が高くなりますが、mb_strpos にエンコーディングを指示しなかったのは残念なので、これで終わりです。




------解決策---------
mb_string 関数グループはこの方法では使用されません

mb_internal_encoding("utf-8");
mb_substr($word, mb_strpos($word, $key_word), 100);
------解決策---------
PHP コード
//文字列インターセプト。すべての文字の長さは 1 で、gbk と utf-8 に共通です。
関数カット($str, $len = 12, $dot = '...') {
    if (mb_strlen($str, "utf-8") 
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Wordの自動折り返しを解除する方法 Wordの自動折り返しを解除する方法 Mar 19, 2024 pm 10:16 PM

Wordの自動折り返しを解除する方法

Wordで定規を表示する方法と定規の操作方法を詳しく解説! Wordで定規を表示する方法と定規の操作方法を詳しく解説! Mar 20, 2024 am 10:46 AM

Wordで定規を表示する方法と定規の操作方法を詳しく解説!

Word文書に手書きの署名を追加する方法 Word文書に手書きの署名を追加する方法 Mar 20, 2024 pm 08:56 PM

Word文書に手書きの署名を追加する方法

Wordのページ余白を設定する方法 Wordのページ余白を設定する方法 Mar 19, 2024 pm 10:00 PM

Wordのページ余白を設定する方法

Wordで点線を引く方法 Wordで点線を引く方法 Mar 19, 2024 pm 10:25 PM

Wordで点線を引く方法

Wordで下矢印を削除する具体的な手順! Wordで下矢印を削除する具体的な手順! Mar 19, 2024 pm 08:50 PM

Wordで下矢印を削除する具体的な手順!

Wordの網掛け設定はどこにあるのでしょうか? Wordの網掛け設定はどこにあるのでしょうか? Mar 20, 2024 am 08:16 AM

Wordの網掛け設定はどこにあるのでしょうか?

ワードの連番を自動で並び替える方法 ワードの連番を自動で並び替える方法 Mar 20, 2024 pm 09:20 PM

ワードの連番を自動で並び替える方法

See all articles