php字符串处理之全角半角转换,php字符串全角半角
php字符串处理之全角半角转换,php字符串全角半角
半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路。
一、概念
全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
二、实现思路
1. 找到目标unicode的字符,可以使用正则表达式解决
2. 修改unicode编码
三、实现
1. 首先是两个unicode与字符的转换函数:
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 将unicode转换成字符 </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> * 将字符转换成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. 全角转半角
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 全角转半角 </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> 编码转换 </span><span>11</span> <span> // 0x3000是空格,特殊处理,其他全角字符编码-0xfee0即可以转为半角</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. 半角转全角
<span> 1</span> <span>/*</span><span>* </span><span> 2</span> <span> * 半角转全角 </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> 编码转换 </span><span>11</span> <span> // 0x0020是空格,特殊处理,其他半角字符编码+0xfee0即可以转为全角</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>);
结果:
<span>1</span> <span>string</span>(9) "abc12 345" <span>2</span> <span>string</span>(27) "abc12 345" <span>3</span> <span>string</span>(9) "abc12 345"

Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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)

Heiße Themen



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

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

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

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

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

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.
