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>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 までご連絡ください。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

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

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

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

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

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

ホットトピック
Gmailメールのログイン入り口はどこですか?
7310
9


Java チュートリアル
1623
14


CakePHP チュートリアル
1344
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1207
29

