導航:首頁 > 編程語言 > php表情處理

php表情處理

發布時間:2022-06-06 09:27:16

A. 想在微信公眾平台開發者模式的自動回復里加入emoji表情,需要什麼php方法來處理

一個 表情和字元的對應方法即可

B. php如何轉換多個表情文字成表情圖片

可以選擇正則表達式,來替換

C. 求php過濾ios的Emoji表情的方法,如果字元串中包含Emoji表情就刪除。

網上已經有開源的了!http://code.iamcal.com/php/emoji/ 你參考下

iOS 5.0之前,蘋果都是採用3個位元組來承接 emoji 表情,Java 的普通 char 可以支持顯示。但 iOS 5.0 之後, 蘋果升級了系統自帶的 emoji 表情輸入法,用的 Unicode 6 標准來統一,是採用4個 bytes 來承接一個 emoji 表情。如果不做處理的話,這種表情直接存儲到 mysql5.5 以下的資料庫是會報錯的。就像這兩個表情一樣:口口, 在 Windows 8 以下估計都不支持顯示,可能會顯示成框框,可能壓根就是空白, 你可以在 Mac 中使用Safari 瀏覽器中,就可以看到。經過測試,在 Mac 就算用 Chrome 瀏覽器(Version 25.0.1364.172)也是不行的。
這種數據在 Mysql 5.5 之前,UTF-8 支持1-3個位元組的編碼,從 Mysql5.5 開始後,可以支持4個位元組的 UTF 編碼,但要特殊標記。修改 Mysql 相應存儲欄位為 utf8mb4 。修改語句如下:
1 ALTER TABLE table_name
2 MODIFY COLUMN content varchar(500) CHARACTER
3 SET utf8mb4 COLLATE utf8mb4_unicode_ci
4 DEFAULT NULL COMMENT 'content of message';
在某種業務情景下,我們可以選擇過濾掉這種「非法」的字元。我採用的方式是,在字元上面做操作,下面是Java示例代碼,核心的代碼附上,應該是 無法直接下載就能夠編譯,你得小小的做一些微調,沒有額外的依賴:
01 public class EmojiFilter {
02
03 /**
04 * 檢測是否有emoji字元
05 * @param source
06 * @return 一旦含有就拋出
07 */
08 public static boolean containsEmoji(String source) {
09 if (StringUtils.isBlank(source)) {
10 return false;
11 }
12
13 int len = source.length();
14
15 for (int i = 0; i < len; i++) {
16 char codePoint = source.charAt(i);
17
18 if (isEmojiCharacter(codePoint)) {
19 //do nothing,判斷到了這里表明,確認有表情字元
20 return true;
21 }
22 }
23
24 return false;
25 }
26
27 private static boolean isEmojiCharacter(char codePoint) {
28 return (codePoint == 0x0) ||
29 (codePoint == 0x9) ||
30 (codePoint == 0xA) ||
31 (codePoint == 0xD) ||
32 ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
33 ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||
34 ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
35 }
36
37 /**
38 * 過濾emoji 或者 其他非文字類型的字元
39 * @param source
40 * @return
41 */
42 public static String filterEmoji(String source) {
43
44 if (!containsEmoji(source)) {
45 return source;//如果不包含,直接返回
46 }
47 //到這里鐵定包含
48 StringBuilder buf = null;
49
50 int len = source.length();
51
52 for (int i = 0; i < len; i++) {
53 char codePoint = source.charAt(i);
54
55 if (isEmojiCharacter(codePoint)) {
56 if (buf == null) {
57 buf = new StringBuilder(source.length());
58 }
59
60 buf.append(codePoint);
61 } else {
62 }
63 }
64
65 if (buf == null) {
66 return source;//如果沒有找到 emoji表情,則返回源字元串
67 } else {
68 if (buf.length() == len) {//這里的意義在於盡可能少的toString,因為會重新生成字元串
69 buf = null;
70 return source;
71 } else {
72 return buf.toString();
73 }
74 }
75
76 }
77 }
還有優化的空間,但是已經能夠滿足大多數情況的需求,附上單元測試(JUnit4):
01 public class EmojiFilterTest {
02
03
04 /**
05 * 測試emoji表情
06 */
07 @Test
08 public void fileterEmoji() {
09 String s = "<body>口口213這是一個有各種內容的消息, Hia Hia Hia !!!! xxxx@@@...*)!" +
10 "(@*$&@(&#!)@*)!&$!)@^%@(!&#. 口口口], ";
11 String c = Utils.filterEmoji(s);
12 assertFalse(s.equals(c));
13 String expected = "<body>213這是一個有各種內容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
14 "!(@*$&@(&#!)@*)!&$!)@^%@(!&#. ], ";
15 assertEquals(expected, c);
16 // assertSame(c, expected);
17 assertSame(expected, "<body>213這是一個有各種內容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
18 "!(@*$&@(&#!)@*)!&$!)@^%@(!&#. ], ");
19 assertSame(c, Utils.filterEmoji(c));
20 }
21
22 }

D. PHP替換表情

可以把從資料庫查出來的文字轉換成字元串,把這些字元串作為圖片名稱, 調的時候直接當成圖片名稱加後綴。 你可以試試在線編輯器啊 這個方便 需要的東西這上面都有 可以自定義

E. PHP網站如何製作留言表情

使用替換.....

F. PHP怎麼處理移動端提交的表情字元

需設置 mysql 的字元集為 utf8mb4
在實行sql server 向 mysql 遷移數據時,報錯:
Incorrect string value: '\xF0\x9F\x98\x8A'
原因是mysql 採用的是 utf8 的字元集,而該字元集最多佔用三個位元組,而一些 表情 需要佔用 4個位元組,所以需要將 utf8 改成 utf8mb4。
原始配置為:
#mysql 5.5 新增參數
character_set_server=utf8
collation_server=utf8_bin
我將 character_set_server=utf8 改為:character_set_server=utf8mb4,重啟mysql 卻報錯:
發生系統錯誤 1067 進程意外終止
但是查看錯誤日誌,卻沒有顯示是什麼錯誤信息。有倒騰了一會兒,想到是不是 collation_server 也要修改成 utf8mb4_bin,測試的結果果然如此。
所以要注意在將 MySQL字元集 utf8 改為 utf8mb4 時,一定要注意 collation_server 也要同時修改!
乾脆將 default-character-set=utf8mb4 也改成了算了。
最後的字元配置如下:
[mysql]
default-character-set=utf8mb4
init_connect='set names utf8mb4'
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_bin
修改之後,啟動成功。

G. 在微信公眾平台開發者模式的自動回復里加入emoji表情,需要什麼PHP方法來處理

用軟銀版的emoji,如雪人的小圖標,「\ue048」

公眾號PHP編寫的介面文件,回復「\ue048」是不行的。需要轉碼,

//content
unicode2utf8("\ue02d");

//轉碼函數
function unicode2utf8($str) { // unicode編碼轉化,用於顯示emoji表情
$str = '{"result_str":"' . $str . '"}'; // 組合成json格式
$strarray = json_decode ( $str, true ); // json轉換為數組,利用 JSON 對 \uXXXX 的支持來把轉義符恢復為 Unicode 字元
return $strarray ['result_str'];
}

閱讀全文

與php表情處理相關的資料

熱點內容
linuxwss 瀏覽:848
一個軟體需要登錄伺服器地址 瀏覽:923
哪裡有解壓程序 瀏覽:299
java靜態方法內存 瀏覽:545
我的世界ec伺服器如何帶vip 瀏覽:737
什麼是由解析器域名和伺服器構成 瀏覽:414
自動識別電影信息源碼 瀏覽:849
柱筋箍筋加密區怎麼算 瀏覽:48
鋼筋中加密15倍是什麼意思 瀏覽:366
esc加密演算法 瀏覽:518
linux運行exe命令 瀏覽:124
一級建造師管理pdf 瀏覽:720
如何更改伺服器登錄賬號 瀏覽:317
看pdf文件軟體 瀏覽:183
android恢復模式 瀏覽:808
生命令人憂 瀏覽:597
魔獸搬磚怎麼選擇伺服器 瀏覽:771
程序員求伯君圖片 瀏覽:827
安卓手機如何打開mark2文件 瀏覽:662
紅米手機解壓中文解壓密碼 瀏覽:316