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"

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre pleine largeur et demi-largeur : 1. L'espace occupé par les caractères ; 2. La représentation des caractères ; 3. Le statut de la méthode de saisie ; 4. La différence essentielle ; Introduction détaillée : 1. Espace d'occupation des caractères, les caractères pleine chasse occupent deux positions de caractère standard, tandis que les caractères demi-chasse occupent une position de caractère standard ; 2. La représentation des caractères, pleine chasse, fait référence à un caractère occupant deux positions de caractère standard, que ce soit est un caractère chinois ou d'autres types de caractères, et la demi-chasse signifie qu'un caractère occupe une position de caractère standard, généralement utilisée pour les lettres, chiffres, symboles anglais, etc.

Dans la vie quotidienne, nous rencontrons souvent le problème de la pleine largeur et de la demi-largeur, mais peu de gens peuvent avoir une compréhension profonde de leur signification et de leur différence. La pleine largeur et la demi-largeur sont en fait des concepts d'une méthode de codage de caractères et ont leurs propres applications spéciales en matière de saisie informatique, d'édition, de composition, etc. Cet article approfondira les différences entre pleine largeur et demi-largeur, les techniques de commutation et les applications réelles. Tout d'abord, les définitions de pleine chasse et de demi-chasse dans le domaine des caractères chinois sont les suivantes : un caractère pleine chasse occupe une position de caractère et un caractère demi-chasse occupe une demi-position de caractère. Dans un ordinateur, passez

Pleine largeur et demi-largeur font référence à deux états de saisie différents dans la méthode de saisie chinoise. Pleine largeur signifie que chaque caractère occupe une position de caractère pleine largeur, tandis que demi-largeur signifie que chaque caractère occupe une position de caractère demi-largeur. Lorsque vous utilisez un ordinateur pour saisir du chinois, vous devez parfois basculer entre pleine largeur et demi-largeur pour vous adapter aux différents scénarios de saisie. Ensuite, nous présenterons plusieurs méthodes de commutation pleine largeur et demi-largeur couramment utilisées, afin que tout le monde puisse facilement apprendre à basculer entre pleine largeur et demi-largeur dans la saisie chinoise. Méthode 1 : utilisez les touches de raccourci pour basculer entre la pleine largeur et la demi-largeur. Dans la plupart des logiciels de méthode de saisie chinoise, vous pouvez utiliser.

Lorsque nous utilisons la méthode de saisie chinoise pour taper, il existe deux manières : pleine largeur et demi-largeur. Parmi elles, il y a beaucoup d'amis qui ne connaissent pas la différence entre pleine largeur et demi-largeur. aux méthodes de saisie pleine largeur et demi-largeur. Faites la différence. N'importe quel signe de ponctuation peut être utilisé à mi-largeur et il n'y a aucune restriction particulière sur les espaces. Dans l'état pleine largeur, la fonction de la barre d'espace change. Après être passé à l'état pleine largeur et avoir appuyé sur la barre d'espace, nous constaterons que la distance entre les caractères devient grande, et cet écart est plus évident que dans l'état demi-largeur. De plus, l’affichage des lettres anglaises est également différent en pleine largeur. A l'état demi-largeur, les lettres anglaises tapées sont de taille normale. Cependant, une fois que nous passons en mode pleine largeur, nous constaterons que les lettres anglaises saisies deviennent grasses et agrandies. dans l'ensemble

À l’ère d’Internet moderne, nous saisissons et modifions souvent du texte sur des ordinateurs. Dans ce processus, nous rencontrons parfois le problème du basculement entre pleine largeur et demi-largeur. La pleine chasse et la demi-chasse font référence à la taille de la position occupée par les caractères. Les caractères pleine chasse occupent une largeur de caractère, tandis que les caractères demi-chasse occupent la moitié d'une largeur de caractère. L’utilisation correcte de la pleine largeur et de la demi-largeur est très importante pour garantir la mise en forme et l’uniformité du texte. Par conséquent, il est nécessaire de maîtriser les compétences de commutation pleine largeur et demi-largeur. Tout d’abord, comprenons les concepts de pleine largeur et de demi-largeur. Les caractères pleine chasse font généralement référence à

Les espaces pleine chasse et les espaces demi-chasse sont deux caractères d'espacement courants en chinois et en japonais. Ils ont des caractéristiques fonctionnelles différentes en termes de composition, d'édition de texte et de méthodes de saisie. Cet article expliquera en détail les caractéristiques et les scénarios d'application des espaces pleine largeur et des espaces demi-largeur, aidant les lecteurs à mieux comprendre et utiliser ces deux caractères spatiaux. Tout d’abord, comprenons les caractéristiques des espaces pleine largeur. Le codage des espaces pleine largeur en Unicode est U+3000. La largeur est la même que celle des caractères chinois ordinaires. Elle est généralement utilisée pour les espaces vides dans la composition chinoise. Les scénarios d'utilisation pour les espaces pleine largeur incluent mais

Lorsque les utilisateurs utilisent habituellement des méthodes de saisie pour insérer du texte, ils peuvent remarquer des différences entre les lettres ou les symboles. Cela est principalement dû à la commutation différente entre les caractères demi-chasse et pleine chasse. Ici, nous allons vous présenter en détail comment réaliser rapidement la conversion entre pleine largeur et demi-largeur. Solution de touche de raccourci pour basculer entre pleine largeur et demi-largeur dans Windows : Alt+Shift Il s'agit de la touche la plus couramment utilisée pour basculer entre les modes de saisie pleine largeur et demi-largeur. Dans l'environnement de saisie chinois, appuyer sur cette touche passera en mode anglais, sinon il passera en mode chinois. Si plusieurs méthodes de saisie sont installées sur votre ordinateur, vous pouvez également utiliser cette touche pour basculer facilement entre les méthodes de saisie. Solution 2 : Ctrl+Shift fait également partie des touches de raccourci permettant de basculer entre pleine largeur et demi-largeur. Cette combinaison de touches est enfoncée en mode de saisie anglais

Titre : Comment basculer facilement entre les modes pleine largeur et demi-largeur dans les méthodes de saisie Lors de l'utilisation quotidienne d'ordinateurs, nous devons souvent basculer entre les modes pleine largeur et demi-largeur pour nous adapter aux différents scénarios et besoins de saisie. Le mode pleine largeur est généralement utilisé pour saisir des caractères chinois, des caractères anglais, des signes de ponctuation, des chiffres, etc., tandis que le mode demi-largeur est plus adapté à la saisie de l'anglais et des chiffres. Cependant, de nombreuses personnes peuvent être confuses lorsqu'elles utilisent les méthodes de saisie et ne savent pas comment basculer facilement entre la pleine largeur et la demi-largeur. Cet article présentera quelques méthodes simples pour vous aider à basculer facilement entre les méthodes de saisie pleine largeur et demi-largeur.
