Maison développement back-end tutoriel php 基于PHP扩展一种处理Emoji方法的类库介绍

基于PHP扩展一种处理Emoji方法的类库介绍

Aug 08, 2016 am 09:22 AM
emoji quot str

Carmela介绍Carmela提供基于PHP,PHP扩展,JAVA,C++等语言的一套处理4四节UTF-8解决方案,比如常见Emoji标签支持背景:UTF-8格式含有Emoji表情字符串直接插入数据库,如果数据库未做调整会提示报错,通过更改数据库和表的字符集为utf8mb4_general_ci,可以避免这种问题。但是,在很多大型系统和架构中,修改数据库的字符集可能会引发很多的问题,比如PC端展示,新老数据兼容问题。针对这类问题,还有另外一种解决方案,入库前替换,出库后根据客户端类型做反向替换。CarmelaCarmela提供基于PHP扩展一套处理4四节UTF-8解决方案,可以把UTF-8中大于3个字节的UTF-8字符替换成ubb模式,比如某UTF-8字符%f0%9f%91%a4(为了展示方便,展示emoji标签的encode模式),替换后的样子[u]1f464[/u],同时从数据库读出时,根据不同的请求客户端(iOS,Andriod,PC)做反向替换。 Carmela的名字来源《不一样的卡梅拉》,《不一样的卡梅拉》系列故事讲的是母鸡卡梅拉和她的儿女们卡梅利多和卡门的历险故事,卡梅拉家族里的每个人都是那样的与众不同,敢于幻想,更敢于去尝试别人不敢想的事情。安装1.编译打包git clone https://github.com/ugg/Carmela /phpize ./configure --with-php-c/php-config-path make make install
  • 修改配置文件

    vim /php.ini

  • 添加以下内容[carmela] extension=carmela.so 方法:carmela_str2ubb: 包含emoji标签的字符串转换成ubb模式,替换后的样子[u]1f464[/u]。一个例子:$str = urldecode("This is test %F0%9F%98%9C+%F0%9F%98%99 by ugg"); echo "str:".$str."\n"; echo "ubb:".carmela_str2ubb($str)."\n"; 输出结果:str:This is test xxxx(CSDN Emoji不能展示用XXXX代替) by ugg ubb:This is test [u]1f61c[/u] [u]1f619[/u] by ugg carmela_ubb2str:包含ubb标签转换为utf-8字符串格式,针对PC平台的转移,可以参考encode.class.php中的carmela_ubb2str方法。一个例子:$str = urldecode("This is test %F0%9F%98%9C+%F0%9F%98%99 by ugg"); $str = carmela_str2ubb($str); echo "ubb:".$str."\n"; echo "str:".carmela_ubb2str($str)."\n"; 输出结果:ubb:This is test [u]1f61c[/u] [u]1f619[/u] by ugg str:This is test(CSDN Emoji不能展示用XXXX代替) by uggcarmela_substr:截取包含emoji字符的字符串指定长度字符。carmela_sububb:截取包含ubb标签的字符串的指定长度字符。carmela_delstr:删除字符串中的emoji字符,非严格模式,3字节的emoji字符无法删除,主要用在一些。carmela_delubb:删除包含ubb标签字符串中的ubb标签。性能使用PHP分别实现了两种方法,分别使用PHP的str_replace方法和PHP查找四字节emoji,进行替换的方法,以及PHP扩展方式,使用相同数据分别进行测试,测试效果如下。=========================== 方案1:PHP str_replace方式 ========================= =========== EMOJI TO STRING ========== TIME:781.94ms,处理行数: 100,处理字数:10100,处理字节数:31028 平均每行处理时间:7.819ms =========== STRING TO EMOJI ========== TIME:118.566ms,处理行数: 100,处理字数:18710,处理字节数:37793 平均每行处理时间:1.186ms =========================== 方案2:PHP字符查找方式 ========================= =========== EMOJI TO STRING ========== TIME:51.526ms,处理行数: 100,处理字数:10100,处理字节数:31028 平均每行处理时间:0.515ms =========== STRING TO EMOJI ========== TIME:27.959ms,处理行数: 100,处理字数:23092,处理字节数:41236 平均每行处理时间:0.28ms =========================== 方案3:PHP扩展方式 ========================= =========== EMOJI TO STRING ========== TIME:0.721ms,处理行数: 100,处理字数:10100,处理字节数:31028 平均每行处理时间:0.007ms =========== STRING TO EMOJI ========== TIME:0.956ms,处理行数: 100,处理字数:20308,处理字节数:38452 平均每行处理时间:0.01ms 从以上测试效果上来看,str_replace方式,性能非常的差。使用PHP直接编写替换函数方式,性能提升10倍多,而采用扩展方式后,性能提升明显,在把emoji从字符形式转换为ubb方式时,性能提升1000倍。以上测试数据通过create_file.php可以动态生成。本测试用例,生成100行数据,每行100个字符,100字符中可以包含3-10个emoji字符,进行测试的,直接运行benchmark.php 查看运行性能。原理处理四字节的emoji原理非常简单,通过字符对比找到emoji字符进行替换。难点就是在基本原理上如何提升性能,如何快速查找,替换。PHP扩展方式,为大家提供了一种思路,可以参考这种思路实现java,C#,js等等版本的。PC如何支持EMoji表情展示?在项目目录中的emoji目录下找到images目录,从web根目录创建emoji文件夹,把images文件夹整个拷贝到emoji文件下,调用encode.class.php里面的carmela_ubb2str方法,Util_Encode::carmela_ubb2str($str, "PC"); 即可在PC上展示Emoji表情,目前收集到的845个emoji表情,一些新的表情符号并没有纳入其中,当然,目前这种方法并没有写入PHP扩展中,性能相对来说并不高。Contact ugg.xchj@gmail.com for all questions

    以上就介绍了基于PHP扩展一种处理Emoji方法的类库介绍,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    Video Face Swap

    Video Face Swap

    Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

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

    Apple lance iOS 17.4 Beta 1, introduisant 118 nouveaux emojis, dont phénix, citron vert, etc. Apple lance iOS 17.4 Beta 1, introduisant 118 nouveaux emojis, dont phénix, citron vert, etc. Jan 26, 2024 am 08:24 AM

    Selon des rapports du 26 janvier, selon le média technologique étranger emojipedia, dans la mise à jour iOS 17.4 Beta 1 publiée aujourd'hui, en plus d'améliorations majeures telles que le chargement latéral et les magasins d'applications tiers pour les tests dans 27 pays de l'UE, Apple a également ajouté plusieurs nouvel Émoji. La mise à jour iOS 17.4 Beta 1 ajoute du phénix, du citron vert, des visages souriants secouant la tête de haut en bas, ainsi qu'une série d'émoticônes de personnages qui montrent la voie, à partir de la mise à jour Emoji 15.1 proposée par Unicode en septembre 2023. Les Emoji complets sont joints comme suit : Cette mise à jour ajoute un total de 118 Emojis, dont 6 nouveaux Emojis et 4 Emojis familiaux non sexistes. De plus, il existe 6 expressions de caractères existantes

    Comment désactiver les emoji dans Win10 Education Edition Comment désactiver les emoji dans Win10 Education Edition Feb 24, 2024 pm 01:55 PM

    Les émoticônes Emoji sont la dernière fonction de méthode de saisie ajoutée à Win10 Education Edition. De nombreuses émoticônes mignonnes rendent le chat moins ennuyeux. Cependant, certains utilisateurs afficheront cette interface lorsqu'ils utiliseront les touches de raccourci. Aujourd'hui, je vais vous montrer comment désactiver les emoji dans Win10 Education Edition. . introduire. Comment désactiver emoji1 dans Win10 Education Edition Tout d'abord, vous devez cliquer avec le bouton droit sur la méthode de saisie sur le côté droit de la barre des tâches ci-dessous. 2. Sélectionnez Paramètres dans la boîte d'options contextuelle pour accéder à l'interface de configuration de la langue. 3. Sélectionnez l'option « Touches » dans l'interface et faites défiler vers le bas pour trouver « Ouvrir le panneau d'émoticônes et de symboles », où vous pouvez désactiver les expressions emoji. 4. Si d'autres méthodes de saisie sont installées, vous pouvez accéder à l'interface « Paramètres et langue » à partir des paramètres Windows, puis sélectionner

    php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

    php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

    Comment saisir les emoji Huawei Comment saisir les emoji Huawei Sep 26, 2023 pm 01:31 PM

    Méthode de saisie des emoji Huawei : 1. Les téléphones mobiles Huawei sont livrés avec un clavier emoji. Vous pouvez passer au clavier pour saisir des emoji lorsque vous saisissez du texte. 2. Lorsque vous devez saisir un emoji, appuyez longuement sur la zone de saisie, puis sélectionnez « Entrée ». « Paramètres de la méthode », dans les paramètres de la méthode de saisie, vous pouvez rechercher et sélectionner la méthode de saisie des emoji fournie avec le système ; 3. Vous pouvez télécharger et utiliser un clavier emoji tiers, puis naviguer sur le clavier et sélectionner l'emoji que vous souhaitez utiliser.

    Analyse du code source str de type Python intégré Analyse du code source str de type Python intégré May 09, 2023 pm 02:16 PM

    1L'unité de base du stockage informatique Unicode est l'octet, composé de 8 bits. Étant donné que l'anglais ne comprend que 26 lettres et un certain nombre de symboles, les caractères anglais peuvent être stockés directement en octets. Mais d'autres langues (comme le chinois, le japonais, le coréen, etc.) doivent utiliser plusieurs octets pour le codage en raison du grand nombre de caractères. Avec la diffusion de la technologie informatique, la technologie de codage des caractères non latins continue de se développer, mais il existe encore deux limitations majeures : pas de support multilingue : le schéma de codage d'une langue ne peut pas être utilisé dans une autre langue et il n'existe pas de norme unifiée : par exemple, il existe de nombreuses normes d'encodage en chinois telles que GBK, GB2312, GB18030, etc. Étant donné que les méthodes d'encodage ne sont pas unifiées, les développeurs doivent effectuer des conversions entre différents encodages, et de nombreuses erreurs se produiront inévitablement.

    iOS 15.4 et iPadOS 15.4 Beta 1 bêta publique publiés, Face ID peut être utilisé même si vous portez un masque iOS 15.4 et iPadOS 15.4 Beta 1 bêta publique publiés, Face ID peut être utilisé même si vous portez un masque Apr 13, 2023 pm 11:01 PM

    Apple a officiellement lancé iOS 15.4 et iPadOS 15.4 Beta 1 au public, version 19E5209h. Les notes de mise à jour officielles répertorient de nombreux changements, notamment l'ajout de nouvelles fonctionnalités. Prise en charge des masques Face ID Apple a ajouté « Mask Face ID » dans iOS 15.4. L'iPhone authentifiera les utilisateurs en identifiant les caractéristiques uniques de la zone autour des yeux lorsqu'ils portent un masque. Notez que les utilisateurs doivent utiliser l'iPhone 12 ou une version ultérieure pour utiliser cette fonctionnalité. Ajout de 112 nouvelles expressions Emoji iOS 15.4 Beta 1 prend officiellement en charge Emoji 14. Ajoutez-y

    Quelles sont les similitudes et les différences entre __str__ et __repr__ en Python ? Quelles sont les similitudes et les différences entre __str__ et __repr__ en Python ? Apr 29, 2023 pm 07:58 PM

    Quelles sont les similitudes et les différences entre __str__ et __repr__ ? Nous connaissons tous la représentation des chaînes. La fonction intégrée repr() de Python peut exprimer des objets sous forme de chaînes pour faciliter notre identification. Il s'agit de la "représentation sous forme de chaîne". repr() obtient la représentation sous forme de chaîne d'un objet via la méthode spéciale __repr__. Si __repr__ n'est pas implémenté, lorsque nous imprimons une instance d'un vecteur sur la console, la chaîne résultante peut l'être. >>>classExample:pass>>>print(str(Example()))>>>

    Que faire si l'emoji mysql est tronqué Que faire si l'emoji mysql est tronqué Feb 16, 2023 am 10:01 AM

    Solution aux emoji mysql tronqués : 1. Vérifiez l'encodage de la table mysql via la commande "show create table test ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" ; 2. Définissez l'encodage de lecture sur "utf8mb4" via "set names utf8mb4 ;".

    See all articles