国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 PHPチュートリアル PHP文字列処理の全角と半角の変換

PHP文字列処理の全角と半角の変換

Jun 13, 2016 pm 12:28 PM
amp char return string unicode

php字符串處理之全角半角轉(zhuǎn)換

半角全角的處理是字符串處理的常見問題,本文嘗試為大家提供一個(gè)思路。

一、概念

全角字符unicode編碼從65281~65374 (十六進(jìn)制 0xFF01 ~ 0xFF5E)
半角字符unicode編碼從33~126 (十六進(jìn)制 0x21~ 0x7E)
空格比較特殊,全角為 12288(0x3000),半角為 32 (0x20)
而且除空格外,全角/半角按unicode編碼排序在順序上是對(duì)應(yīng)的
所以可以直接通過用+-法來處理非空格數(shù)據(jù),對(duì)空格單獨(dú)處理

二、實(shí)現(xiàn)思路

1. 找到目標(biāo)unicode的字符,可以使用正則表達(dá)式解決

2. 修改unicode編碼

三、實(shí)現(xiàn)

1. 首先是兩個(gè)unicode與字符的轉(zhuǎn)換函數(shù):

<span style="color: #008080;"> 1</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*</span><span style="color: #008080;"> 2</span> <span style="color: #008000;">     * 將unicode轉(zhuǎn)換成字符</span><span style="color: #008080;"> 3</span> <span style="color: #008000;">     * @param int $unicode</span><span style="color: #008080;"> 4</span> <span style="color: #008000;">     * @return string UTF-8字符</span><span style="color: #008080;"> 5</span> <span style="color: #008000;">     *</span><span style="color: #008000;">*/</span><span style="color: #008080;"> 6</span>     <span style="color: #0000ff;">function</span> unicode2Char(<span style="color: #800080;">$unicode</span><span style="color: #000000;">){</span><span style="color: #008080;"> 7</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$unicode</span> < 128)     <span style="color: #0000ff;">return</span> <span style="color: #008080;">chr</span>(<span style="color: #800080;">$unicode</span><span style="color: #000000;">);</span><span style="color: #008080;"> 8</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$unicode</span> < 2048)    <span style="color: #0000ff;">return</span> <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> >> 6) + 192) .<span style="color: #008080;"> 9</span>                                       <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> & 63) + 128<span style="color: #000000;">);</span><span style="color: #008080;">10</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$unicode</span> < 65536)   <span style="color: #0000ff;">return</span> <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> >> 12) + 224) .<span style="color: #008080;">11</span>                                       <span style="color: #008080;">chr</span>(((<span style="color: #800080;">$unicode</span> >> 6) & 63) + 128) .<span style="color: #008080;">12</span>                                       <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> & 63) + 128<span style="color: #000000;">);</span><span style="color: #008080;">13</span>         <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$unicode</span> < 2097152) <span style="color: #0000ff;">return</span> <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> >> 18) + 240) .<span style="color: #008080;">14</span>                                       <span style="color: #008080;">chr</span>(((<span style="color: #800080;">$unicode</span> >> 12) & 63) + 128) .<span style="color: #008080;">15</span>                                       <span style="color: #008080;">chr</span>(((<span style="color: #800080;">$unicode</span> >> 6) & 63) + 128) .<span style="color: #008080;">16</span>                                       <span style="color: #008080;">chr</span>((<span style="color: #800080;">$unicode</span> & 63) + 128<span style="color: #000000;">);</span><span style="color: #008080;">17</span>         <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">18</span> <span style="color: #000000;">    }</span><span style="color: #008080;">19</span>  <span style="color: #008080;">20</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*</span><span style="color: #008080;">21</span> <span style="color: #008000;">     * 將字符轉(zhuǎn)換成unicode</span><span style="color: #008080;">22</span> <span style="color: #008000;">     * @param string $char 必須是UTF-8字符</span><span style="color: #008080;">23</span> <span style="color: #008000;">     * @return int</span><span style="color: #008080;">24</span> <span style="color: #008000;">     *</span><span style="color: #008000;">*/</span><span style="color: #008080;">25</span>     <span style="color: #0000ff;">function</span> char2Unicode(<span style="color: #800080;">$char</span><span style="color: #000000;">){</span><span style="color: #008080;">26</span>         <span style="color: #0000ff;">switch</span> (<span style="color: #008080;">strlen</span>(<span style="color: #800080;">$char</span><span style="color: #000000;">)){</span><span style="color: #008080;">27</span>             <span style="color: #0000ff;">case</span> 1 : <span style="color: #0000ff;">return</span> <span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span><span style="color: #000000;">);</span><span style="color: #008080;">28</span>             <span style="color: #0000ff;">case</span> 2 : <span style="color: #0000ff;">return</span> (<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{1}) & 63) |<span style="color: #008080;">29</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{0}) & 31) << 6<span style="color: #000000;">);</span><span style="color: #008080;">30</span>             <span style="color: #0000ff;">case</span> 3 : <span style="color: #0000ff;">return</span> (<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{2}) & 63) |<span style="color: #008080;">31</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{1}) & 63) << 6) |<span style="color: #008080;">32</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{0}) & 15) << 12<span style="color: #000000;">);</span><span style="color: #008080;">33</span>             <span style="color: #0000ff;">case</span> 4 : <span style="color: #0000ff;">return</span> (<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{3}) & 63) |<span style="color: #008080;">34</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{2}) & 63) << 6) |<span style="color: #008080;">35</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{1}) & 63) << 12) |<span style="color: #008080;">36</span>                             ((<span style="color: #008080;">ord</span>(<span style="color: #800080;">$char</span>{0}) & 7)  << 18<span style="color: #000000;">);</span><span style="color: #008080;">37</span>             <span style="color: #0000ff;">default</span> :<span style="color: #008080;">38</span>                 <span style="color: #008080;">trigger_error</span>('Character is not UTF-8!', <span style="color: #ff00ff;">E_USER_WARNING</span><span style="color: #000000;">);</span><span style="color: #008080;">39</span>                 <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">40</span> <span style="color: #000000;">        }</span><span style="color: #008080;">41</span>     }

2. 全角轉(zhuǎn)半角

<span style="color: #008080;"> 1</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*</span><span style="color: #008080;"> 2</span> <span style="color: #008000;">     * 全角轉(zhuǎn)半角</span><span style="color: #008080;"> 3</span> <span style="color: #008000;">     * @param string $str</span><span style="color: #008080;"> 4</span> <span style="color: #008000;">     * @return string</span><span style="color: #008080;"> 5</span> <span style="color: #008000;">     *</span><span style="color: #008000;">*/</span><span style="color: #008080;"> 6</span>     <span style="color: #0000ff;">function</span> sbc2Dbc(<span style="color: #800080;">$str</span><span style="color: #000000;">){</span><span style="color: #008080;"> 7</span>         <span style="color: #0000ff;">return</span> <span style="color: #008080;">preg_replace</span><span style="color: #000000;">(</span><span style="color: #008080;"> 8</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 全角字符 </span><span style="color: #008080;"> 9</span>             '/[\x{3000}\x{ff01}-\x{ff5f}]/ue',<span style="color: #008080;">10</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 編碼轉(zhuǎn)換</span><span style="color: #008080;">11</span> <span style="color: #008000;">            // 0x3000是空格,特殊處理,其他全角字符編碼-0xfee0即可以轉(zhuǎn)為半角</span><span style="color: #008080;">12</span>             '($unicode=char2Unicode(\'\0\')) == 0x3000 ? " " : (($code=$unicode-0xfee0) > 256 ? unicode2Char($code) : chr($code))',<span style="color: #008080;">13</span>             <span style="color: #800080;">$str</span><span style="color: #008080;">14</span> <span style="color: #000000;">        );</span><span style="color: #008080;">15</span>     }

3. 半角轉(zhuǎn)全角

<span style="color: #008080;"> 1</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*</span><span style="color: #008080;"> 2</span> <span style="color: #008000;">     * 半角轉(zhuǎn)全角</span><span style="color: #008080;"> 3</span> <span style="color: #008000;">     * @param string $str</span><span style="color: #008080;"> 4</span> <span style="color: #008000;">     * @return string</span><span style="color: #008080;"> 5</span> <span style="color: #008000;">     *</span><span style="color: #008000;">*/</span><span style="color: #008080;"> 6</span>     <span style="color: #0000ff;">function</span> dbc2Sbc(<span style="color: #800080;">$str</span><span style="color: #000000;">){</span><span style="color: #008080;"> 7</span>         <span style="color: #0000ff;">return</span> <span style="color: #008080;">preg_replace</span><span style="color: #000000;">(</span><span style="color: #008080;"> 8</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 半角字符 </span><span style="color: #008080;"> 9</span>             '/[\x{0020}\x{0020}-\x{7e}]/ue',  <span style="color: #008080;">10</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 編碼轉(zhuǎn)換</span><span style="color: #008080;">11</span> <span style="color: #008000;">            // 0x0020是空格,特殊處理,其他半角字符編碼+0xfee0即可以轉(zhuǎn)為全角</span><span style="color: #008080;">12</span>             '($unicode=char2Unicode(\'\0\')) == 0x0020 ? unicode2Char(0x3000) : (($code=$unicode+0xfee0) > 256 ? unicode2Char($code) : chr($code))',<span style="color: #008080;">13</span>             <span style="color: #800080;">$str</span><span style="color: #008080;">14</span> <span style="color: #000000;">        );</span><span style="color: #008080;">15</span>     }

四、測(cè)試

?示例代碼:

<span style="color: #008080;">1</span> <span style="color: #800080;">$a</span> = 'abc12 345'<span style="color: #000000;">;</span><span style="color: #008080;">2</span> <span style="color: #800080;">$sbc</span> = dbc2Sbc(<span style="color: #800080;">$a</span><span style="color: #000000;">);</span><span style="color: #008080;">3</span> <span style="color: #800080;">$dbc</span> = sbc2Dbc(<span style="color: #800080;">$sbc</span><span style="color: #000000;">);</span><span style="color: #008080;">4</span> <span style="color: #008080;">5</span> <span style="color: #008080;">var_dump</span>(<span style="color: #800080;">$a</span>, <span style="color: #800080;">$sbc</span>, <span style="color: #800080;">$dbc</span>);

結(jié)果:

<span style="color: #008080;">1</span> <span style="color: #0000ff;">string</span>(9) "abc12 345"<span style="color: #008080;">2</span> <span style="color: #0000ff;">string</span>(27) "abc12?。常矗?quot;<span style="color: #008080;">3</span> <span style="color: #0000ff;">string</span>(9) "abc12 345"

?

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C言語のreturnの使い方を詳しく解説 C言語のreturnの使い方を詳しく解説 Oct 07, 2023 am 10:58 AM

C 言語における return の使い方は、 1. 戻り値の型が void の関數(shù)については、return 文を使用して関數(shù)の実行を早期に終了することができます; 2. 戻り値の型が void ではない関數(shù)については、 return ステートメントは、関數(shù)の実行を終了するためのものです。結(jié)果は呼び出し元に返されます。 3. 関數(shù)の実行を早期に終了します。関數(shù)內(nèi)で return ステートメントを使用して、関數(shù)の実行を早期に終了することもできます。関數(shù)が値を返さない場(chǎng)合。

Java の String.valueOf() 関數(shù)を使用して基本データ型を文字列に変換する Java の String.valueOf() 関數(shù)を使用して基本データ型を文字列に変換する Jul 24, 2023 pm 07:55 PM

Java の String.valueOf() 関數(shù)を使用して基本データ型を文字列に変換する Java 開発で基本データ型を文字列に変換する必要がある場(chǎng)合、一般的な方法は String クラスの valueOf() 関數(shù)を使用することです。この関數(shù)は、基本データ型のパラメータを受け入れ、対応する文字列表現(xiàn)を返すことができます。この記事では、基本的なデータ型変換に String.valueOf() 関數(shù)を使用する方法を検討し、いくつかのコード例を提供します。

char配列を文字列に変換する方法 char配列を文字列に変換する方法 Jun 09, 2023 am 10:04 AM

char配列をstringに変換する方法:代入によって実現(xiàn)できます {char a[]=" abc d\0efg ";string s=a;} 構(gòu)文を使用して、char配列にstringに値を直接代入させて実行します変換を完了するためのコード。

Java の String.replace() 関數(shù)を使用して、文字列內(nèi)の文字 (文字列) を置換します。 Java の String.replace() 関數(shù)を使用して、文字列內(nèi)の文字 (文字列) を置換します。 Jul 25, 2023 pm 05:16 PM

Java の String.replace() 関數(shù)を使用して文字列內(nèi)の文字 (文字列) を置換する Java では、文字列は不変オブジェクトです。つまり、文字列オブジェクトが作成されると、その値は変更できません。ただし、文字列內(nèi)の特定の文字または文字列を置換する必要がある狀況が発生する場(chǎng)合があります?,F(xiàn)時(shí)點(diǎn)では、Java の String クラスの replace() メソッドを使用して文字列置換を?qū)g裝できます。 String クラスの replace() メソッドには 2 つのタイプがあります。

JavaのString.length()関數(shù)を使用して文字列の長(zhǎng)さを取得します。 JavaのString.length()関數(shù)を使用して文字列の長(zhǎng)さを取得します。 Jul 25, 2023 am 09:09 AM

文字列の長(zhǎng)さを取得するには、Java の String.length() 関數(shù)を使用します。Java プログラミングでは、文字列は非常に一般的なデータ型です。多くの場(chǎng)合、文字列の長(zhǎng)さ、つまり文字列內(nèi)の文字?jǐn)?shù)を取得する必要があります。 Java では、String クラスの length() 関數(shù)を使用して文字列の長(zhǎng)さを取得できます。簡(jiǎn)単なコード例を次に示します。 publicclassStringLengthExample{publ

PHPを深く理解する:JSON Unicodeを中國(guó)語に変換する実裝方法 PHPを深く理解する:JSON Unicodeを中國(guó)語に変換する実裝方法 Mar 05, 2024 pm 02:48 PM

PHP の深い理解: JSONUnicode を中國(guó)語に変換する実裝方法 開発中、JSON データを処理する必要がある狀況によく遭遇しますが、特に変換する必要がある場(chǎng)合、JSON 內(nèi)の Unicode エンコードによっていくつかのシナリオで問題が発生します。 Unicode エンコードを漢字に変換する場(chǎng)合。 PHP では、この変換処理を?qū)g現(xiàn)するためのメソッドがいくつかありますが、以下では一般的なメソッドを紹介し、具體的なコード例を示します。まず、JSON の Un について理解しましょう

Javaのreturn文とfinally文の実行順序は何ですか? Javaのreturn文とfinally文の実行順序は何ですか? Apr 25, 2023 pm 07:55 PM

ソースコード: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#出力 上記のコードの出力は、単純に次のように結(jié)論付けることができます:finally の前に return が実行されます。バイトコード レベルで何が起こるかを見てみましょう。以下は、case1 メソッドのバイトコードの一部をインターセプトし、ソース コードを比較して、各命令の意味に注釈を付けます。

Unicodeを中國(guó)語に変換する方法 Unicodeを中國(guó)語に変換する方法 Dec 14, 2023 am 10:57 AM

Unicode は、さまざまな言語や記號(hào)を表すために使用される文字エンコード標(biāo)準(zhǔn)です。 Unicode エンコードを中國(guó)語の文字に変換するには、Python の組み込み関數(shù) chr() および ord() を使用できます。

See all articles