Rumah pembangunan bahagian belakang tutorial 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教程有兴趣的朋友有所帮助。

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Apple mengeluarkan iOS 17.4 Beta 1, memperkenalkan 118 emoji baharu, termasuk phoenix, limau, dsb. Apple mengeluarkan iOS 17.4 Beta 1, memperkenalkan 118 emoji baharu, termasuk phoenix, limau, dsb. Jan 26, 2024 am 08:24 AM

    Menurut laporan pada 26 Januari, menurut emojipedia media teknologi asing, dalam kemas kini iOS 17.4 Beta 1 yang dikeluarkan hari ini, sebagai tambahan kepada penambahbaikan besar seperti sideloading dan kedai aplikasi pihak ketiga untuk ujian di 27 negara EU, Apple juga telah menambah beberapa Emoji baharu. Kemas kini iOS 17.4 Beta 1 menambah phoenix, limau, wajah tersenyum menggelengkan kepala mereka ke atas dan ke bawah, dan satu siri emotikon aksara yang menunjukkan arah, daripada kemas kini Emoji 15.1 yang dicadangkan oleh Unicode pada September 2023. Emoji lengkap dilampirkan seperti berikut: Kemas kini ini menambah sejumlah 118 Emoji, termasuk 6 Emoji baharu dan 4 Emoji keluarga neutral jantina. Selain itu, terdapat 6 ekspresi watak sedia ada

    Cara mematikan emoji dalam Win10 Education Edition Cara mematikan emoji dalam Win10 Education Edition Feb 24, 2024 pm 01:55 PM

    Emotikon emoji ialah fungsi kaedah input terkini yang ditambahkan pada Win10 Education Edition. Banyak emotikon comel menjadikan sembang kurang membosankan perkenalkan. Cara untuk mematikan emoji1 dalam Win10 Education Edition Pertama, anda perlu klik kanan kaedah input di sebelah kanan bar tugas di bawah. 2. Pilih Tetapan dalam kotak pilihan pop timbul untuk memasuki antara muka tetapan bahasa. 3. Pilih pilihan "Kunci" dalam antara muka dan tatal ke bahagian bawah untuk mencari "Panel Emotikon dan Simbol Terbuka", di mana anda boleh mematikan ekspresi emoji. 4. Jika kaedah input lain dipasang, anda boleh memasukkan antara muka "Tetapan dan Bahasa" daripada tetapan Windows, dan kemudian pilih

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

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

    Bagaimana untuk memasukkan emoji Huawei Bagaimana untuk memasukkan emoji Huawei Sep 26, 2023 pm 01:31 PM

    Kaedah input emoji Huawei: 1. Telefon bimbit Huawei disertakan dengan papan kekunci emoji Anda boleh beralih ke papan kekunci untuk memasukkan emoji apabila memasukkan teks 2. Di mana anda perlu memasukkan emoji, tekan lama kotak input, dan kemudian pilih "Enter". "Tetapan Kaedah", dalam tetapan kaedah input, anda boleh mencari dan memilih kaedah input emoji yang disertakan dengan sistem 3. Anda boleh memuat turun dan menggunakan papan kekunci emoji pihak ketiga, dan kemudian anda boleh menyemak imbas pada papan kekunci dan memilih emoji yang anda mahu gunakan.

    iOS 15.4 dan iPadOS 15.4 Beta 1 beta awam dikeluarkan, Face ID boleh digunakan walaupun anda memakai topeng iOS 15.4 dan iPadOS 15.4 Beta 1 beta awam dikeluarkan, Face ID boleh digunakan walaupun anda memakai topeng Apr 13, 2023 pm 11:01 PM

    Apple secara rasminya telah melancarkan iOS 15.4 dan iPadOS 15.4 Beta 1 kepada umum, versi 19E5209h. Nota kemas kini rasmi menyenaraikan banyak perubahan, termasuk penambahan ciri baharu. Sokongan untuk topeng Face ID Apple telah menambah "Mask Face ID" dalam iOS 15.4 iPhone akan mengesahkan pengguna dengan mengenal pasti ciri unik kawasan sekitar mata apabila memakai topeng. Ambil perhatian bahawa pengguna mesti menggunakan iPhone 12 ke atas untuk menggunakan ciri ini. Menambah 112 ekspresi Emoji baharu iOS 15.4 Beta 1 menyokong Emoji 14 secara rasmi. Tambah padanya

    Analisis kod sumber str jenis terbina dalam Python Analisis kod sumber str jenis terbina dalam Python May 09, 2023 pm 02:16 PM

    1Unit asas storan komputer Unicode ialah bait, yang terdiri daripada 8 bit. Memandangkan bahasa Inggeris hanya terdiri daripada 26 huruf ditambah beberapa simbol, aksara Inggeris boleh disimpan terus dalam bait. Tetapi bahasa lain (seperti Cina, Jepun, Korea, dll.) perlu menggunakan berbilang bait untuk pengekodan kerana bilangan aksara yang banyak. Dengan penyebaran teknologi komputer, teknologi pengekodan aksara bukan Latin terus berkembang, tetapi masih terdapat dua batasan utama: tiada sokongan berbilang bahasa: skema pengekodan satu bahasa tidak boleh digunakan dalam bahasa lain dan tiada standard bersatu: contohnya Terdapat banyak piawaian pengekodan dalam bahasa Cina seperti GBK, GB2312, GB18030, dsb. Memandangkan kaedah pengekodan tidak bersatu, pembangun perlu menukar berulang-alik antara pengekodan yang berbeza, dan banyak ralat pasti akan berlaku.

    Apakah persamaan dan perbezaan antara __str__ dan __repr__ dalam Python? Apakah persamaan dan perbezaan antara __str__ dan __repr__ dalam Python? Apr 29, 2023 pm 07:58 PM

    Apakah persamaan dan perbezaan antara __str__ dan __repr__? Kita semua tahu perwakilan rentetan fungsi repr() boleh menyatakan objek dalam bentuk rentetan untuk memudahkan pengenalan kita. Ini ialah "perwakilan rentetan". repr() mendapatkan perwakilan rentetan objek melalui kaedah khas __repr__. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin. >>>classContoh:lulus>>>cetak(str(Contoh()))>>>

    Apa yang perlu dilakukan jika emoji mysql bercelaru Apa yang perlu dilakukan jika emoji mysql bercelaru Feb 16, 2023 am 10:01 AM

    Penyelesaian kepada emoji mysql yang bercelaru: 1. Semak pengekodan jadual mysql melalui arahan "show create table test ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" 2. Tetapkan pengekodan bacaan kepada "utf8mb4" melalui "set names utf8mb4;".

    See all articles