php字符串處理之全角半角轉(zhuǎn)換,php字符串全角半角
Jun 13, 2016 am 08:45 AMphp字符串處理之全角半角轉(zhuǎn)換,php字符串全角半角
半角全角的處理是字符串處理的常見問題,本文嘗試為大家提供一個思路。
一、概念
全角字符unicode編碼從65281~65374 (十六進制 0xFF01 ~ 0xFF5E)
半角字符unicode編碼從33~126 (十六進制 0x21~ 0x7E)
空格比較特殊,全角為 12288(0x3000),半角為 32 (0x20)
而且除空格外,全角/半角按unicode編碼排序在順序上是對應(yīng)的
所以可以直接通過用+-法來處理非空格數(shù)據(jù),對空格單獨處理
二、實現(xiàn)思路
1. 找到目標unicode的字符,可以使用正則表達式解決
2. 修改unicode編碼
三、實現(xiàn)
1. 首先是兩個unicode與字符的轉(zhuǎn)換函數(shù):
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 將unicode轉(zhuǎn)換成字符 </span><span> 3</span> <span> * @param int $unicode </span><span> 4</span> <span> * @return string UTF-8字符 </span><span> 5</span> <span> *</span><span>*/</span> <span> 6</span> <span>function</span> unicode2Char(<span>$unicode</span><span>){ </span><span> 7</span> <span>if</span>(<span>$unicode</span> < 128) <span>return</span> <span>chr</span>(<span>$unicode</span><span>); </span><span> 8</span> <span>if</span>(<span>$unicode</span> < 2048) <span>return</span> <span>chr</span>((<span>$unicode</span> >> 6) + 192) . <span> 9</span> <span>chr</span>((<span>$unicode</span> & 63) + 128<span>); </span><span>10</span> <span>if</span>(<span>$unicode</span> < 65536) <span>return</span> <span>chr</span>((<span>$unicode</span> >> 12) + 224) . <span>11</span> <span>chr</span>(((<span>$unicode</span> >> 6) & 63) + 128) . <span>12</span> <span>chr</span>((<span>$unicode</span> & 63) + 128<span>); </span><span>13</span> <span>if</span>(<span>$unicode</span> < 2097152) <span>return</span> <span>chr</span>((<span>$unicode</span> >> 18) + 240) . <span>14</span> <span>chr</span>(((<span>$unicode</span> >> 12) & 63) + 128) . <span>15</span> <span>chr</span>(((<span>$unicode</span> >> 6) & 63) + 128) . <span>16</span> <span>chr</span>((<span>$unicode</span> & 63) + 128<span>); </span><span>17</span> <span>return</span> <span>false</span><span>; </span><span>18</span> <span> } </span><span>19</span> <span>20</span> <span>/*</span><span>* </span><span>21</span> <span> * 將字符轉(zhuǎn)換成unicode </span><span>22</span> <span> * @param string $char 必須是UTF-8字符 </span><span>23</span> <span> * @return int </span><span>24</span> <span> *</span><span>*/</span> <span>25</span> <span>function</span> char2Unicode(<span>$char</span><span>){ </span><span>26</span> <span>switch</span> (<span>strlen</span>(<span>$char</span><span>)){ </span><span>27</span> <span>case</span> 1 : <span>return</span> <span>ord</span>(<span>$char</span><span>); </span><span>28</span> <span>case</span> 2 : <span>return</span> (<span>ord</span>(<span>$char</span>{1}) & 63) | <span>29</span> ((<span>ord</span>(<span>$char</span>{0}) & 31) << 6<span>); </span><span>30</span> <span>case</span> 3 : <span>return</span> (<span>ord</span>(<span>$char</span>{2}) & 63) | <span>31</span> ((<span>ord</span>(<span>$char</span>{1}) & 63) << 6) | <span>32</span> ((<span>ord</span>(<span>$char</span>{0}) & 15) << 12<span>); </span><span>33</span> <span>case</span> 4 : <span>return</span> (<span>ord</span>(<span>$char</span>{3}) & 63) | <span>34</span> ((<span>ord</span>(<span>$char</span>{2}) & 63) << 6) | <span>35</span> ((<span>ord</span>(<span>$char</span>{1}) & 63) << 12) | <span>36</span> ((<span>ord</span>(<span>$char</span>{0}) & 7) << 18<span>); </span><span>37</span> <span>default</span> : <span>38</span> <span>trigger_error</span>('Character is not UTF-8!', <span>E_USER_WARNING</span><span>); </span><span>39</span> <span>return</span> <span>false</span><span>; </span><span>40</span> <span> } </span><span>41</span> }
2. 全角轉(zhuǎn)半角
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 全角轉(zhuǎn)半角 </span><span> 3</span> <span> * @param string $str </span><span> 4</span> <span> * @return string </span><span> 5</span> <span> *</span><span>*/</span> <span> 6</span> <span>function</span> sbc2Dbc(<span>$str</span><span>){ </span><span> 7</span> <span>return</span> <span>preg_replace</span><span>( </span><span> 8</span> <span>//</span><span> 全角字符 </span> <span> 9</span> '/[\x{3000}\x{ff01}-\x{ff5f}]/ue', <span>10</span> <span>//</span><span> 編碼轉(zhuǎn)換 </span><span>11</span> <span> // 0x3000是空格,特殊處理,其他全角字符編碼-0xfee0即可以轉(zhuǎn)為半角</span> <span>12</span> '($unicode=char2Unicode(\'\0\')) == 0x3000 ? " " : (($code=$unicode-0xfee0) > 256 ? unicode2Char($code) : chr($code))', <span>13</span> <span>$str</span> <span>14</span> <span> ); </span><span>15</span> }
3. 半角轉(zhuǎn)全角
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 半角轉(zhuǎn)全角 </span><span> 3</span> <span> * @param string $str </span><span> 4</span> <span> * @return string </span><span> 5</span> <span> *</span><span>*/</span> <span> 6</span> <span>function</span> dbc2Sbc(<span>$str</span><span>){</span> <span> 7</span> <span>return</span> <span>preg_replace</span><span>( </span><span> 8</span> <span>//</span><span> 半角字符 </span> <span> 9</span> '/[\x{0020}\x{0020}-\x{7e}]/ue', <span>10</span> <span>//</span><span> 編碼轉(zhuǎn)換 </span><span>11</span> <span> // 0x0020是空格,特殊處理,其他半角字符編碼+0xfee0即可以轉(zhuǎn)為全角</span> <span>12</span> '($unicode=char2Unicode(\'\0\')) == 0x0020 ? unicode2Char(0x3000) : (($code=$unicode+0xfee0) > 256 ? unicode2Char($code) : chr($code))', <span>13</span> <span>$str</span> <span>14</span> <span> ); </span><span>15</span> }
四、測試
示例代碼:
<span>1</span> <span>$a</span> = 'abc12 345'<span>; </span><span>2</span> <span>$sbc</span> = dbc2Sbc(<span>$a</span><span>); </span><span>3</span> <span>$dbc</span> = sbc2Dbc(<span>$sbc</span><span>); </span><span>4</span> <span>5</span> <span>var_dump</span>(<span>$a</span>, <span>$sbc</span>, <span>$dbc</span>);
結(jié)果:
<span>1</span> <span>string</span>(9) "abc12 345" <span>2</span> <span>string</span>(27) "abc12?。常矗?quot; <span>3</span> <span>string</span>(9) "abc12 345"
?

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen voller Breite und halber Breite: 1. Der von Zeichen eingenommene Raum; 3. Der Status der Eingabemethode; 5. Die Verwendung von Systembefehlen; Ausführliche Einführung: 1. Zeichenbelegungsraum, Zeichen voller Breite belegen zwei Standardzeichenpositionen, w?hrend Zeichen halber Breite eine Standardzeichenposition einnehmen. 2. Zeichendarstellung, volle Breite bezieht sich auf ein Zeichen, das zwei Standardzeichenpositionen einnimmt ist ein chinesisches Zeichen oder andere Zeichentypen. Halbe Breite bedeutet, dass ein Zeichen eine Standardzeichenposition einnimmt, die normalerweise für englische Buchstaben, Zahlen, Symbole usw. verwendet wird.

Im t?glichen Leben sto?en wir oft auf das Problem der Voll- und Halbbreite, aber nur wenige Menschen haben m?glicherweise ein tiefes Verst?ndnis für deren Bedeutung und Unterschied. Vollbreite und Halbbreite sind eigentlich Konzepte von Zeichenkodierungsmethoden und haben spezielle Anwendungen bei der Computereingabe, Bearbeitung, Schriftsatz usw. Dieser Artikel befasst sich mit den Unterschieden zwischen voller und halber Breite, Schalttechniken und realen Anwendungen. Zun?chst einmal lauten die Definitionen von voller Breite und halber Breite im Bereich der chinesischen Schriftzeichen: Ein Zeichen voller Breite nimmt eine Zeichenposition ein, und ein Zeichen halber Breite nimmt eine halbe Zeichenposition ein. In einem Computer passieren

Wenn wir die chinesische Eingabemethode zum Tippen verwenden, gibt es zwei M?glichkeiten: Vollbreite und Halbbreite. Unter ihnen gibt es viele Freunde, die den Unterschied zwischen Vollbreite und Halbbreite nicht kennen Bei den Eingabemethoden voller und halber Breite machen Sie den Unterschied. Jedes Satzzeichen kann im Zustand halber Breite verwendet werden und es gibt keine besonderen Einschr?nkungen für Leerzeichen. Im Vollbildzustand ?ndert sich die Funktion der Leertaste. Nachdem wir in den Zustand voller Breite gewechselt und die Leertaste gedrückt haben, werden wir feststellen, dass der Abstand zwischen den Zeichen gr??er wird und diese Lücke deutlicher ist als im Zustand halber Breite. Darüber hinaus unterscheidet sich auch die Anzeige englischer Buchstaben im Vollbildzustand. Im Zustand halber Breite haben die getippten englischen Buchstaben die normale Gr??e. Sobald wir jedoch in den Vollbreitenmodus wechseln, werden wir feststellen, dass die eingegebenen englischen Buchstaben fett und vergr??ert werden. im ganzen

Volle Breite und halbe Breite beziehen sich auf zwei verschiedene Eingabezust?nde in der chinesischen Eingabemethode. Volle Breite bedeutet, dass jedes Zeichen eine Zeichenposition voller Breite einnimmt, w?hrend halbe Breite bedeutet, dass jedes Zeichen eine Zeichenposition halber Breite einnimmt. Wenn Sie einen Computer zur Eingabe von Chinesisch verwenden, müssen Sie manchmal zwischen voller und halber Breite wechseln, um sich an unterschiedliche Eingabeszenarien anzupassen. Als N?chstes stellen wir einige h?ufig verwendete Methoden zum Umschalten in voller Breite und halber Breite vor, damit jeder leicht lernen kann, wie man bei chinesischen Eingaben zwischen voller Breite und halber Breite wechselt. Methode 1: Verwenden Sie Tastenkombinationen, um zwischen voller und halber Breite zu wechseln. In den meisten chinesischen Eingabemethodenprogrammen k?nnen Sie diese verwenden

Im modernen Internetzeitalter geben wir Texte h?ufig am Computer ein und bearbeiten sie. Bei diesem Vorgang sto?en wir manchmal auf das Problem, zwischen voller und halber Breite zu wechseln. Vollbreite und halbe Breite beziehen sich auf die Gr??e der von Zeichen eingenommenen Position. Zeichen voller Breite nehmen eine Zeichenbreite ein, w?hrend Zeichen halber Breite eine halbe Zeichenbreite einnehmen. Die korrekte Verwendung von voller und halber Breite ist sehr wichtig, um die Formatierung und Einheitlichkeit des Textes sicherzustellen. Daher ist es notwendig, die Umschaltf?higkeiten in voller und halber Breite zu beherrschen. Lassen Sie uns zun?chst die Konzepte voller Breite und halber Breite verstehen. Zeichen in voller Breite beziehen sich im Allgemeinen auf

Wenn Benutzer normalerweise Eingabemethoden zum Einfügen von Text verwenden, bemerken sie m?glicherweise Unterschiede zwischen Buchstaben oder Symbolen. Dies ist haupts?chlich auf den unterschiedlichen Wechsel zwischen Zeichen halber und voller Breite zurückzuführen. Hier stellen wir Ihnen im Detail vor, wie Sie die Konvertierung zwischen voller Breite und halber Breite schnell realisieren k?nnen. Tastenkombinationsl?sung zum Wechseln zwischen voller und halber Breite in Fenstern: Alt+Umschalt Dies ist die am h?ufigsten verwendete Taste zum Wechseln zwischen Eingabemodus voller und halber Breite. In der chinesischen Eingabeumgebung wird durch Drücken dieser Taste in den englischen Modus gewechselt, andernfalls wird in den chinesischen Modus gewechselt. Wenn auf Ihrem Computer mehrere Eingabemethoden installiert sind, k?nnen Sie mit dieser Taste auch einfach zwischen den Eingabemethoden wechseln. L?sung 2: Strg+Umschalt geh?rt ebenfalls zu den Tastenkombinationen zum Wechseln zwischen voller und halber Breite. Diese Tastenkombination wird im englischen Eingabemodus gedrückt

Leerzeichen voller Breite und Leerzeichen halber Breite sind zwei g?ngige Leerzeichen im Chinesischen und Japanischen. Sie haben unterschiedliche funktionale Eigenschaften beim Satz, bei der Textbearbeitung und bei den Eingabemethoden. In diesem Artikel werden die Eigenschaften und Anwendungsszenarien von Leerzeichen voller Breite und Leerzeichen halber Breite ausführlich erl?utert und den Lesern dabei geholfen, diese beiden Leerzeichen besser zu verstehen und zu verwenden. Lassen Sie uns zun?chst die Eigenschaften von Leerzeichen voller Breite verstehen. Die Kodierung von Leerzeichen voller Breite in Unicode ist U+3000. Die Breite entspricht der von gew?hnlichen chinesischen Zeichen. Sie wird normalerweise für Leerzeichen im chinesischen Schriftsatz verwendet. Zu den Nutzungsszenarien für Leerzeichen in voller Breite geh?ren aber

Titel: So wechseln Sie bei Eingabemethoden ganz einfach zwischen den Modi voller und halber Breite. Bei der t?glichen Verwendung von Computern müssen wir h?ufig zwischen den Modi voller und halber Breite wechseln, um uns an unterschiedliche Eingabeszenarien und -anforderungen anzupassen. Der Modus ?Volle Breite“ wird im Allgemeinen zur Eingabe von chinesischen Zeichen, englischen Zeichen, Satzzeichen, Zahlen usw. verwendet, w?hrend der Modus ?Halbe Breite“ besser für die Eingabe von Englisch und Zahlen geeignet ist. Viele Menschen sind jedoch m?glicherweise verwirrt, wenn sie Eingabemethoden verwenden, und wissen nicht, wie sie einfach zwischen voller und halber Breite wechseln k?nnen. In diesem Artikel werden einige einfache Methoden vorgestellt, mit denen Sie problemlos zwischen Eingabemethoden voller und halber Breite wechseln k?nnen.
