Version Description
- Added Emoji image rendering
Download this release
Release Info
Developer | timwhitlock |
Plugin | Latest Tweets Widget |
Version | 1.1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.1 to 1.1.2
- api/inc/return-emoji.php +843 -0
- api/lib/twitter-api-emoji.php +0 -0
- api/lib/twitter-api-unicode.php +122 -0
- api/lib/twitter-api-utils.php +25 -81
- api/test/bootstrap.php +1 -1
- api/test/utils/EmojiTest.php +20 -77
- api/test/utils/UnicodeTest.php +16 -0
- api/test/utils/inc-emoji.php +0 -843
- latest-tweets.php +1 -1
- readme.txt +8 -5
api/inc/return-emoji.php
ADDED
@@ -0,0 +1,843 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
return array (
|
3 |
+
'😁' => '1f601',
|
4 |
+
'😂' => '1f602',
|
5 |
+
'😃' => '1f603',
|
6 |
+
'😄' => '1f604',
|
7 |
+
'😅' => '1f605',
|
8 |
+
'😆' => '1f606',
|
9 |
+
'😉' => '1f609',
|
10 |
+
'😊' => '1f60a',
|
11 |
+
'😋' => '1f60b',
|
12 |
+
'😌' => '1f60c',
|
13 |
+
'😍' => '1f60d',
|
14 |
+
'😏' => '1f60f',
|
15 |
+
'😒' => '1f612',
|
16 |
+
'😓' => '1f613',
|
17 |
+
'😔' => '1f614',
|
18 |
+
'😖' => '1f616',
|
19 |
+
'😘' => '1f618',
|
20 |
+
'😚' => '1f61a',
|
21 |
+
'😜' => '1f61c',
|
22 |
+
'😝' => '1f61d',
|
23 |
+
'😞' => '1f61e',
|
24 |
+
'😠' => '1f620',
|
25 |
+
'😡' => '1f621',
|
26 |
+
'😢' => '1f622',
|
27 |
+
'😣' => '1f623',
|
28 |
+
'😤' => '1f624',
|
29 |
+
'😥' => '1f625',
|
30 |
+
'😨' => '1f628',
|
31 |
+
'😩' => '1f629',
|
32 |
+
'😪' => '1f62a',
|
33 |
+
'😫' => '1f62b',
|
34 |
+
'😭' => '1f62d',
|
35 |
+
'😰' => '1f630',
|
36 |
+
'😱' => '1f631',
|
37 |
+
'😲' => '1f632',
|
38 |
+
'😳' => '1f633',
|
39 |
+
'😵' => '1f635',
|
40 |
+
'😷' => '1f637',
|
41 |
+
'😸' => '1f638',
|
42 |
+
'😹' => '1f639',
|
43 |
+
'😺' => '1f63a',
|
44 |
+
'😻' => '1f63b',
|
45 |
+
'😼' => '1f63c',
|
46 |
+
'😽' => '1f63d',
|
47 |
+
'😾' => '1f63e',
|
48 |
+
'😿' => '1f63f',
|
49 |
+
'🙀' => '1f640',
|
50 |
+
'🙅' => '1f645',
|
51 |
+
'🙆' => '1f646',
|
52 |
+
'🙇' => '1f647',
|
53 |
+
'🙈' => '1f648',
|
54 |
+
'🙉' => '1f649',
|
55 |
+
'🙊' => '1f64a',
|
56 |
+
'🙋' => '1f64b',
|
57 |
+
'🙌' => '1f64c',
|
58 |
+
'🙍' => '1f64d',
|
59 |
+
'🙎' => '1f64e',
|
60 |
+
'🙏' => '1f64f',
|
61 |
+
'✂' => 2702,
|
62 |
+
'✅' => 2705,
|
63 |
+
'✈' => 2708,
|
64 |
+
'✉' => 2709,
|
65 |
+
'✊' => '270a',
|
66 |
+
'✋' => '270b',
|
67 |
+
'✌' => '270c',
|
68 |
+
'✏' => '270f',
|
69 |
+
'✒' => 2712,
|
70 |
+
'✔' => 2714,
|
71 |
+
'✖' => 2716,
|
72 |
+
'✨' => 2728,
|
73 |
+
'✳' => 2733,
|
74 |
+
'✴' => 2734,
|
75 |
+
'❄' => 2744,
|
76 |
+
'❇' => 2747,
|
77 |
+
'❌' => '274c',
|
78 |
+
'❎' => '274e',
|
79 |
+
'❓' => 2753,
|
80 |
+
'❔' => 2754,
|
81 |
+
'❕' => 2755,
|
82 |
+
'❗' => 2757,
|
83 |
+
'❤' => 2764,
|
84 |
+
'➕' => 2795,
|
85 |
+
'➖' => 2796,
|
86 |
+
'➗' => 2797,
|
87 |
+
'➡' => '27a1',
|
88 |
+
'➰' => '27b0',
|
89 |
+
'🚀' => '1f680',
|
90 |
+
'🚃' => '1f683',
|
91 |
+
'🚄' => '1f684',
|
92 |
+
'🚅' => '1f685',
|
93 |
+
'🚇' => '1f687',
|
94 |
+
'🚉' => '1f689',
|
95 |
+
'🚌' => '1f68c',
|
96 |
+
'🚏' => '1f68f',
|
97 |
+
'🚑' => '1f691',
|
98 |
+
'🚒' => '1f692',
|
99 |
+
'🚓' => '1f693',
|
100 |
+
'🚕' => '1f695',
|
101 |
+
'🚗' => '1f697',
|
102 |
+
'🚙' => '1f699',
|
103 |
+
'🚚' => '1f69a',
|
104 |
+
'🚢' => '1f6a2',
|
105 |
+
'🚤' => '1f6a4',
|
106 |
+
'🚥' => '1f6a5',
|
107 |
+
'🚧' => '1f6a7',
|
108 |
+
'🚨' => '1f6a8',
|
109 |
+
'🚩' => '1f6a9',
|
110 |
+
'🚪' => '1f6aa',
|
111 |
+
'🚫' => '1f6ab',
|
112 |
+
'🚬' => '1f6ac',
|
113 |
+
'🚭' => '1f6ad',
|
114 |
+
'🚲' => '1f6b2',
|
115 |
+
'🚶' => '1f6b6',
|
116 |
+
'🚹' => '1f6b9',
|
117 |
+
'🚺' => '1f6ba',
|
118 |
+
'🚻' => '1f6bb',
|
119 |
+
'🚼' => '1f6bc',
|
120 |
+
'🚽' => '1f6bd',
|
121 |
+
'🚾' => '1f6be',
|
122 |
+
'🛀' => '1f6c0',
|
123 |
+
'Ⓜ' => '24c2',
|
124 |
+
'🅰' => '1f170',
|
125 |
+
'🅱' => '1f171',
|
126 |
+
'🅾' => '1f17e',
|
127 |
+
'🅿' => '1f17f',
|
128 |
+
'🆎' => '1f18e',
|
129 |
+
'🆑' => '1f191',
|
130 |
+
'🆒' => '1f192',
|
131 |
+
'🆓' => '1f193',
|
132 |
+
'🆔' => '1f194',
|
133 |
+
'🆕' => '1f195',
|
134 |
+
'🆖' => '1f196',
|
135 |
+
'🆗' => '1f197',
|
136 |
+
'🆘' => '1f198',
|
137 |
+
'🆙' => '1f199',
|
138 |
+
'🆚' => '1f19a',
|
139 |
+
'🇩🇪' => '1f1e9-1f1ea',
|
140 |
+
'🇬🇧' => '1f1ec-1f1e7',
|
141 |
+
'🇨🇳' => '1f1e8-1f1f3',
|
142 |
+
'🇯🇵' => '1f1ef-1f1f5',
|
143 |
+
'🇰🇷' => '1f1f0-1f1f7',
|
144 |
+
'🇫🇷' => '1f1eb-1f1f7',
|
145 |
+
'🇪🇸' => '1f1ea-1f1f8',
|
146 |
+
'🇮🇹' => '1f1ee-1f1f9',
|
147 |
+
'🇺🇸' => '1f1fa-1f1f8',
|
148 |
+
'🇷🇺' => '1f1f7-1f1fa',
|
149 |
+
'🈁' => '1f201',
|
150 |
+
'🈂' => '1f202',
|
151 |
+
'🈚' => '1f21a',
|
152 |
+
'🈯' => '1f22f',
|
153 |
+
'🈲' => '1f232',
|
154 |
+
'🈳' => '1f233',
|
155 |
+
'🈴' => '1f234',
|
156 |
+
'🈵' => '1f235',
|
157 |
+
'🈶' => '1f236',
|
158 |
+
'🈷' => '1f237',
|
159 |
+
'🈸' => '1f238',
|
160 |
+
'🈹' => '1f239',
|
161 |
+
'🈺' => '1f23a',
|
162 |
+
'🉐' => '1f250',
|
163 |
+
'🉑' => '1f251',
|
164 |
+
'‼' => '203c',
|
165 |
+
'⁉' => 2049,
|
166 |
+
'8⃣' => '0038-20e3',
|
167 |
+
'9⃣' => '0039-20e3',
|
168 |
+
'7⃣' => '0037-20e3',
|
169 |
+
'6⃣' => '0036-20e3',
|
170 |
+
'1⃣' => '0031-20e3',
|
171 |
+
'0⃣' => '0030-20e3',
|
172 |
+
'2⃣' => '0032-20e3',
|
173 |
+
'3⃣' => '0033-20e3',
|
174 |
+
'5⃣' => '0035-20e3',
|
175 |
+
'4⃣' => '0034-20e3',
|
176 |
+
'#⃣' => '0023-20e3',
|
177 |
+
'™' => 2122,
|
178 |
+
'ℹ' => 2139,
|
179 |
+
'↔' => 2194,
|
180 |
+
'↕' => 2195,
|
181 |
+
'↖' => 2196,
|
182 |
+
'↗' => 2197,
|
183 |
+
'↘' => 2198,
|
184 |
+
'↙' => 2199,
|
185 |
+
'↩' => '21a9',
|
186 |
+
'↪' => '21aa',
|
187 |
+
'⌚' => '231a',
|
188 |
+
'⌛' => '231b',
|
189 |
+
'⏩' => '23e9',
|
190 |
+
'⏪' => '23ea',
|
191 |
+
'⏫' => '23eb',
|
192 |
+
'⏬' => '23ec',
|
193 |
+
'⏰' => '23f0',
|
194 |
+
'⏳' => '23f3',
|
195 |
+
'▪' => '25aa',
|
196 |
+
'▫' => '25ab',
|
197 |
+
'▶' => '25b6',
|
198 |
+
'◀' => '25c0',
|
199 |
+
'◻' => '25fb',
|
200 |
+
'◼' => '25fc',
|
201 |
+
'◽' => '25fd',
|
202 |
+
'◾' => '25fe',
|
203 |
+
'☀' => 2600,
|
204 |
+
'☁' => 2601,
|
205 |
+
'☎' => '260e',
|
206 |
+
'☑' => 2611,
|
207 |
+
'☔' => 2614,
|
208 |
+
'☕' => 2615,
|
209 |
+
'☝' => '261d',
|
210 |
+
'☺' => '263a',
|
211 |
+
'♈' => 2648,
|
212 |
+
'♉' => 2649,
|
213 |
+
'♊' => '264a',
|
214 |
+
'♋' => '264b',
|
215 |
+
'♌' => '264c',
|
216 |
+
'♍' => '264d',
|
217 |
+
'♎' => '264e',
|
218 |
+
'♏' => '264f',
|
219 |
+
'♐' => 2650,
|
220 |
+
'♑' => 2651,
|
221 |
+
'♒' => 2652,
|
222 |
+
'♓' => 2653,
|
223 |
+
'♠' => 2660,
|
224 |
+
'♣' => 2663,
|
225 |
+
'♥' => 2665,
|
226 |
+
'♦' => 2666,
|
227 |
+
'♨' => 2668,
|
228 |
+
'♻' => '267b',
|
229 |
+
'♿' => '267f',
|
230 |
+
'⚓' => 2693,
|
231 |
+
'⚠' => '26a0',
|
232 |
+
'⚡' => '26a1',
|
233 |
+
'⚪' => '26aa',
|
234 |
+
'⚫' => '26ab',
|
235 |
+
'⚽' => '26bd',
|
236 |
+
'⚾' => '26be',
|
237 |
+
'⛄' => '26c4',
|
238 |
+
'⛅' => '26c5',
|
239 |
+
'⛎' => '26ce',
|
240 |
+
'⛔' => '26d4',
|
241 |
+
'⛪' => '26ea',
|
242 |
+
'⛲' => '26f2',
|
243 |
+
'⛳' => '26f3',
|
244 |
+
'⛵' => '26f5',
|
245 |
+
'⛺' => '26fa',
|
246 |
+
'⛽' => '26fd',
|
247 |
+
'⤴' => 2934,
|
248 |
+
'⤵' => 2935,
|
249 |
+
'⬅' => '2b05',
|
250 |
+
'⬆' => '2b06',
|
251 |
+
'⬇' => '2b07',
|
252 |
+
'⬛' => '2b1b',
|
253 |
+
'⬜' => '2b1c',
|
254 |
+
'⭐' => '2b50',
|
255 |
+
'⭕' => '2b55',
|
256 |
+
'〰' => 3030,
|
257 |
+
'〽' => '303d',
|
258 |
+
'㊗' => 3297,
|
259 |
+
'㊙' => 3299,
|
260 |
+
'🀄' => '1f004',
|
261 |
+
'🃏' => '1f0cf',
|
262 |
+
'🌀' => '1f300',
|
263 |
+
'🌁' => '1f301',
|
264 |
+
'🌂' => '1f302',
|
265 |
+
'🌃' => '1f303',
|
266 |
+
'🌄' => '1f304',
|
267 |
+
'🌅' => '1f305',
|
268 |
+
'🌆' => '1f306',
|
269 |
+
'🌇' => '1f307',
|
270 |
+
'🌈' => '1f308',
|
271 |
+
'🌉' => '1f309',
|
272 |
+
'🌊' => '1f30a',
|
273 |
+
'🌋' => '1f30b',
|
274 |
+
'🌌' => '1f30c',
|
275 |
+
'🌏' => '1f30f',
|
276 |
+
'🌑' => '1f311',
|
277 |
+
'🌓' => '1f313',
|
278 |
+
'🌔' => '1f314',
|
279 |
+
'🌕' => '1f315',
|
280 |
+
'🌙' => '1f319',
|
281 |
+
'🌛' => '1f31b',
|
282 |
+
'🌟' => '1f31f',
|
283 |
+
'🌠' => '1f320',
|
284 |
+
'🌰' => '1f330',
|
285 |
+
'🌱' => '1f331',
|
286 |
+
'🌴' => '1f334',
|
287 |
+
'🌵' => '1f335',
|
288 |
+
'🌷' => '1f337',
|
289 |
+
'🌸' => '1f338',
|
290 |
+
'🌹' => '1f339',
|
291 |
+
'🌺' => '1f33a',
|
292 |
+
'🌻' => '1f33b',
|
293 |
+
'🌼' => '1f33c',
|
294 |
+
'🌽' => '1f33d',
|
295 |
+
'🌾' => '1f33e',
|
296 |
+
'🌿' => '1f33f',
|
297 |
+
'🍀' => '1f340',
|
298 |
+
'🍁' => '1f341',
|
299 |
+
'🍂' => '1f342',
|
300 |
+
'🍃' => '1f343',
|
301 |
+
'🍄' => '1f344',
|
302 |
+
'🍅' => '1f345',
|
303 |
+
'🍆' => '1f346',
|
304 |
+
'🍇' => '1f347',
|
305 |
+
'🍈' => '1f348',
|
306 |
+
'🍉' => '1f349',
|
307 |
+
'🍊' => '1f34a',
|
308 |
+
'🍌' => '1f34c',
|
309 |
+
'🍍' => '1f34d',
|
310 |
+
'🍎' => '1f34e',
|
311 |
+
'🍏' => '1f34f',
|
312 |
+
'🍑' => '1f351',
|
313 |
+
'🍒' => '1f352',
|
314 |
+
'🍓' => '1f353',
|
315 |
+
'🍔' => '1f354',
|
316 |
+
'🍕' => '1f355',
|
317 |
+
'🍖' => '1f356',
|
318 |
+
'🍗' => '1f357',
|
319 |
+
'🍘' => '1f358',
|
320 |
+
'🍙' => '1f359',
|
321 |
+
'🍚' => '1f35a',
|
322 |
+
'🍛' => '1f35b',
|
323 |
+
'🍜' => '1f35c',
|
324 |
+
'🍝' => '1f35d',
|
325 |
+
'🍞' => '1f35e',
|
326 |
+
'🍟' => '1f35f',
|
327 |
+
'🍠' => '1f360',
|
328 |
+
'🍡' => '1f361',
|
329 |
+
'🍢' => '1f362',
|
330 |
+
'🍣' => '1f363',
|
331 |
+
'🍤' => '1f364',
|
332 |
+
'🍥' => '1f365',
|
333 |
+
'🍦' => '1f366',
|
334 |
+
'🍧' => '1f367',
|
335 |
+
'🍨' => '1f368',
|
336 |
+
'🍩' => '1f369',
|
337 |
+
'🍪' => '1f36a',
|
338 |
+
'🍫' => '1f36b',
|
339 |
+
'🍬' => '1f36c',
|
340 |
+
'🍭' => '1f36d',
|
341 |
+
'🍮' => '1f36e',
|
342 |
+
'🍯' => '1f36f',
|
343 |
+
'🍰' => '1f370',
|
344 |
+
'🍱' => '1f371',
|
345 |
+
'🍲' => '1f372',
|
346 |
+
'🍳' => '1f373',
|
347 |
+
'🍴' => '1f374',
|
348 |
+
'🍵' => '1f375',
|
349 |
+
'🍶' => '1f376',
|
350 |
+
'🍷' => '1f377',
|
351 |
+
'🍸' => '1f378',
|
352 |
+
'🍹' => '1f379',
|
353 |
+
'🍺' => '1f37a',
|
354 |
+
'🍻' => '1f37b',
|
355 |
+
'🎀' => '1f380',
|
356 |
+
'🎁' => '1f381',
|
357 |
+
'🎂' => '1f382',
|
358 |
+
'🎃' => '1f383',
|
359 |
+
'🎄' => '1f384',
|
360 |
+
'🎅' => '1f385',
|
361 |
+
'🎆' => '1f386',
|
362 |
+
'🎇' => '1f387',
|
363 |
+
'🎈' => '1f388',
|
364 |
+
'🎉' => '1f389',
|
365 |
+
'🎊' => '1f38a',
|
366 |
+
'🎋' => '1f38b',
|
367 |
+
'🎌' => '1f38c',
|
368 |
+
'🎍' => '1f38d',
|
369 |
+
'🎎' => '1f38e',
|
370 |
+
'🎏' => '1f38f',
|
371 |
+
'🎐' => '1f390',
|
372 |
+
'🎑' => '1f391',
|
373 |
+
'🎒' => '1f392',
|
374 |
+
'🎓' => '1f393',
|
375 |
+
'🎠' => '1f3a0',
|
376 |
+
'🎡' => '1f3a1',
|
377 |
+
'🎢' => '1f3a2',
|
378 |
+
'🎣' => '1f3a3',
|
379 |
+
'🎤' => '1f3a4',
|
380 |
+
'🎥' => '1f3a5',
|
381 |
+
'🎦' => '1f3a6',
|
382 |
+
'🎧' => '1f3a7',
|
383 |
+
'🎨' => '1f3a8',
|
384 |
+
'🎩' => '1f3a9',
|
385 |
+
'🎪' => '1f3aa',
|
386 |
+
'🎫' => '1f3ab',
|
387 |
+
'🎬' => '1f3ac',
|
388 |
+
'🎭' => '1f3ad',
|
389 |
+
'🎮' => '1f3ae',
|
390 |
+
'🎯' => '1f3af',
|
391 |
+
'🎰' => '1f3b0',
|
392 |
+
'🎱' => '1f3b1',
|
393 |
+
'🎲' => '1f3b2',
|
394 |
+
'🎳' => '1f3b3',
|
395 |
+
'🎴' => '1f3b4',
|
396 |
+
'🎵' => '1f3b5',
|
397 |
+
'🎶' => '1f3b6',
|
398 |
+
'🎷' => '1f3b7',
|
399 |
+
'🎸' => '1f3b8',
|
400 |
+
'🎹' => '1f3b9',
|
401 |
+
'🎺' => '1f3ba',
|
402 |
+
'🎻' => '1f3bb',
|
403 |
+
'🎼' => '1f3bc',
|
404 |
+
'🎽' => '1f3bd',
|
405 |
+
'🎾' => '1f3be',
|
406 |
+
'🎿' => '1f3bf',
|
407 |
+
'🏀' => '1f3c0',
|
408 |
+
'🏁' => '1f3c1',
|
409 |
+
'🏂' => '1f3c2',
|
410 |
+
'🏃' => '1f3c3',
|
411 |
+
'🏄' => '1f3c4',
|
412 |
+
'🏆' => '1f3c6',
|
413 |
+
'🏈' => '1f3c8',
|
414 |
+
'🏊' => '1f3ca',
|
415 |
+
'🏠' => '1f3e0',
|
416 |
+
'🏡' => '1f3e1',
|
417 |
+
'🏢' => '1f3e2',
|
418 |
+
'🏣' => '1f3e3',
|
419 |
+
'🏥' => '1f3e5',
|
420 |
+
'🏦' => '1f3e6',
|
421 |
+
'🏧' => '1f3e7',
|
422 |
+
'🏨' => '1f3e8',
|
423 |
+
'🏩' => '1f3e9',
|
424 |
+
'🏪' => '1f3ea',
|
425 |
+
'🏫' => '1f3eb',
|
426 |
+
'🏬' => '1f3ec',
|
427 |
+
'🏭' => '1f3ed',
|
428 |
+
'🏮' => '1f3ee',
|
429 |
+
'🏯' => '1f3ef',
|
430 |
+
'🏰' => '1f3f0',
|
431 |
+
'🐌' => '1f40c',
|
432 |
+
'🐍' => '1f40d',
|
433 |
+
'🐎' => '1f40e',
|
434 |
+
'🐑' => '1f411',
|
435 |
+
'🐒' => '1f412',
|
436 |
+
'🐔' => '1f414',
|
437 |
+
'🐗' => '1f417',
|
438 |
+
'🐘' => '1f418',
|
439 |
+
'🐙' => '1f419',
|
440 |
+
'🐚' => '1f41a',
|
441 |
+
'🐛' => '1f41b',
|
442 |
+
'🐜' => '1f41c',
|
443 |
+
'🐝' => '1f41d',
|
444 |
+
'🐞' => '1f41e',
|
445 |
+
'🐟' => '1f41f',
|
446 |
+
'🐠' => '1f420',
|
447 |
+
'🐡' => '1f421',
|
448 |
+
'🐢' => '1f422',
|
449 |
+
'🐣' => '1f423',
|
450 |
+
'🐤' => '1f424',
|
451 |
+
'🐥' => '1f425',
|
452 |
+
'🐦' => '1f426',
|
453 |
+
'🐧' => '1f427',
|
454 |
+
'🐨' => '1f428',
|
455 |
+
'🐩' => '1f429',
|
456 |
+
'🐫' => '1f42b',
|
457 |
+
'🐬' => '1f42c',
|
458 |
+
'🐭' => '1f42d',
|
459 |
+
'🐮' => '1f42e',
|
460 |
+
'🐯' => '1f42f',
|
461 |
+
'🐰' => '1f430',
|
462 |
+
'🐱' => '1f431',
|
463 |
+
'🐲' => '1f432',
|
464 |
+
'🐳' => '1f433',
|
465 |
+
'🐴' => '1f434',
|
466 |
+
'🐵' => '1f435',
|
467 |
+
'🐶' => '1f436',
|
468 |
+
'🐷' => '1f437',
|
469 |
+
'🐸' => '1f438',
|
470 |
+
'🐹' => '1f439',
|
471 |
+
'🐺' => '1f43a',
|
472 |
+
'🐻' => '1f43b',
|
473 |
+
'🐼' => '1f43c',
|
474 |
+
'🐽' => '1f43d',
|
475 |
+
'🐾' => '1f43e',
|
476 |
+
'👀' => '1f440',
|
477 |
+
'👂' => '1f442',
|
478 |
+
'👃' => '1f443',
|
479 |
+
'👄' => '1f444',
|
480 |
+
'👅' => '1f445',
|
481 |
+
'👆' => '1f446',
|
482 |
+
'👇' => '1f447',
|
483 |
+
'👈' => '1f448',
|
484 |
+
'👉' => '1f449',
|
485 |
+
'👊' => '1f44a',
|
486 |
+
'👋' => '1f44b',
|
487 |
+
'👌' => '1f44c',
|
488 |
+
'👍' => '1f44d',
|
489 |
+
'👎' => '1f44e',
|
490 |
+
'👏' => '1f44f',
|
491 |
+
'👐' => '1f450',
|
492 |
+
'👑' => '1f451',
|
493 |
+
'👒' => '1f452',
|
494 |
+
'👓' => '1f453',
|
495 |
+
'👔' => '1f454',
|
496 |
+
'👕' => '1f455',
|
497 |
+
'👖' => '1f456',
|
498 |
+
'👗' => '1f457',
|
499 |
+
'👘' => '1f458',
|
500 |
+
'👙' => '1f459',
|
501 |
+
'👚' => '1f45a',
|
502 |
+
'👛' => '1f45b',
|
503 |
+
'👜' => '1f45c',
|
504 |
+
'👝' => '1f45d',
|
505 |
+
'👞' => '1f45e',
|
506 |
+
'👟' => '1f45f',
|
507 |
+
'👠' => '1f460',
|
508 |
+
'👡' => '1f461',
|
509 |
+
'👢' => '1f462',
|
510 |
+
'👣' => '1f463',
|
511 |
+
'👤' => '1f464',
|
512 |
+
'👦' => '1f466',
|
513 |
+
'👧' => '1f467',
|
514 |
+
'👨' => '1f468',
|
515 |
+
'👩' => '1f469',
|
516 |
+
'👪' => '1f46a',
|
517 |
+
'👫' => '1f46b',
|
518 |
+
'👮' => '1f46e',
|
519 |
+
'👯' => '1f46f',
|
520 |
+
'👰' => '1f470',
|
521 |
+
'👱' => '1f471',
|
522 |
+
'👲' => '1f472',
|
523 |
+
'👳' => '1f473',
|
524 |
+
'👴' => '1f474',
|
525 |
+
'👵' => '1f475',
|
526 |
+
'👶' => '1f476',
|
527 |
+
'👷' => '1f477',
|
528 |
+
'👸' => '1f478',
|
529 |
+
'👹' => '1f479',
|
530 |
+
'👺' => '1f47a',
|
531 |
+
'👻' => '1f47b',
|
532 |
+
'👼' => '1f47c',
|
533 |
+
'👽' => '1f47d',
|
534 |
+
'👾' => '1f47e',
|
535 |
+
'👿' => '1f47f',
|
536 |
+
'💀' => '1f480',
|
537 |
+
'💁' => '1f481',
|
538 |
+
'💂' => '1f482',
|
539 |
+
'💃' => '1f483',
|
540 |
+
'💄' => '1f484',
|
541 |
+
'💅' => '1f485',
|
542 |
+
'💆' => '1f486',
|
543 |
+
'💇' => '1f487',
|
544 |
+
'💈' => '1f488',
|
545 |
+
'💉' => '1f489',
|
546 |
+
'💊' => '1f48a',
|
547 |
+
'💋' => '1f48b',
|
548 |
+
'💌' => '1f48c',
|
549 |
+
'💍' => '1f48d',
|
550 |
+
'💎' => '1f48e',
|
551 |
+
'💏' => '1f48f',
|
552 |
+
'💐' => '1f490',
|
553 |
+
'💑' => '1f491',
|
554 |
+
'💒' => '1f492',
|
555 |
+
'💓' => '1f493',
|
556 |
+
'💔' => '1f494',
|
557 |
+
'💕' => '1f495',
|
558 |
+
'💖' => '1f496',
|
559 |
+
'💗' => '1f497',
|
560 |
+
'💘' => '1f498',
|
561 |
+
'💙' => '1f499',
|
562 |
+
'💚' => '1f49a',
|
563 |
+
'💛' => '1f49b',
|
564 |
+
'💜' => '1f49c',
|
565 |
+
'💝' => '1f49d',
|
566 |
+
'💞' => '1f49e',
|
567 |
+
'💟' => '1f49f',
|
568 |
+
'💠' => '1f4a0',
|
569 |
+
'💡' => '1f4a1',
|
570 |
+
'💢' => '1f4a2',
|
571 |
+
'💣' => '1f4a3',
|
572 |
+
'💤' => '1f4a4',
|
573 |
+
'💥' => '1f4a5',
|
574 |
+
'💦' => '1f4a6',
|
575 |
+
'💧' => '1f4a7',
|
576 |
+
'💨' => '1f4a8',
|
577 |
+
'💩' => '1f4a9',
|
578 |
+
'💪' => '1f4aa',
|
579 |
+
'💫' => '1f4ab',
|
580 |
+
'💬' => '1f4ac',
|
581 |
+
'💮' => '1f4ae',
|
582 |
+
'💯' => '1f4af',
|
583 |
+
'💰' => '1f4b0',
|
584 |
+
'💱' => '1f4b1',
|
585 |
+
'💲' => '1f4b2',
|
586 |
+
'💳' => '1f4b3',
|
587 |
+
'💴' => '1f4b4',
|
588 |
+
'💵' => '1f4b5',
|
589 |
+
'💸' => '1f4b8',
|
590 |
+
'💹' => '1f4b9',
|
591 |
+
'💺' => '1f4ba',
|
592 |
+
'💻' => '1f4bb',
|
593 |
+
'💼' => '1f4bc',
|
594 |
+
'💽' => '1f4bd',
|
595 |
+
'💾' => '1f4be',
|
596 |
+
'💿' => '1f4bf',
|
597 |
+
'📀' => '1f4c0',
|
598 |
+
'📁' => '1f4c1',
|
599 |
+
'📂' => '1f4c2',
|
600 |
+
'📃' => '1f4c3',
|
601 |
+
'📄' => '1f4c4',
|
602 |
+
'📅' => '1f4c5',
|
603 |
+
'📆' => '1f4c6',
|
604 |
+
'📇' => '1f4c7',
|
605 |
+
'📈' => '1f4c8',
|
606 |
+
'📉' => '1f4c9',
|
607 |
+
'📊' => '1f4ca',
|
608 |
+
'📋' => '1f4cb',
|
609 |
+
'📌' => '1f4cc',
|
610 |
+
'📍' => '1f4cd',
|
611 |
+
'📎' => '1f4ce',
|
612 |
+
'📏' => '1f4cf',
|
613 |
+
'📐' => '1f4d0',
|
614 |
+
'📑' => '1f4d1',
|
615 |
+
'📒' => '1f4d2',
|
616 |
+
'📓' => '1f4d3',
|
617 |
+
'📔' => '1f4d4',
|
618 |
+
'📕' => '1f4d5',
|
619 |
+
'📖' => '1f4d6',
|
620 |
+
'📗' => '1f4d7',
|
621 |
+
'📘' => '1f4d8',
|
622 |
+
'📙' => '1f4d9',
|
623 |
+
'📚' => '1f4da',
|
624 |
+
'📛' => '1f4db',
|
625 |
+
'📜' => '1f4dc',
|
626 |
+
'📝' => '1f4dd',
|
627 |
+
'📞' => '1f4de',
|
628 |
+
'📟' => '1f4df',
|
629 |
+
'📠' => '1f4e0',
|
630 |
+
'📡' => '1f4e1',
|
631 |
+
'📢' => '1f4e2',
|
632 |
+
'📣' => '1f4e3',
|
633 |
+
'📤' => '1f4e4',
|
634 |
+
'📥' => '1f4e5',
|
635 |
+
'📦' => '1f4e6',
|
636 |
+
'📧' => '1f4e7',
|
637 |
+
'📨' => '1f4e8',
|
638 |
+
'📩' => '1f4e9',
|
639 |
+
'📪' => '1f4ea',
|
640 |
+
'📫' => '1f4eb',
|
641 |
+
'📮' => '1f4ee',
|
642 |
+
'📰' => '1f4f0',
|
643 |
+
'📱' => '1f4f1',
|
644 |
+
'📲' => '1f4f2',
|
645 |
+
'📳' => '1f4f3',
|
646 |
+
'📴' => '1f4f4',
|
647 |
+
'📶' => '1f4f6',
|
648 |
+
'📷' => '1f4f7',
|
649 |
+
'📹' => '1f4f9',
|
650 |
+
'📺' => '1f4fa',
|
651 |
+
'📻' => '1f4fb',
|
652 |
+
'📼' => '1f4fc',
|
653 |
+
'🔃' => '1f503',
|
654 |
+
'🔊' => '1f50a',
|
655 |
+
'🔋' => '1f50b',
|
656 |
+
'🔌' => '1f50c',
|
657 |
+
'🔍' => '1f50d',
|
658 |
+
'🔎' => '1f50e',
|
659 |
+
'🔏' => '1f50f',
|
660 |
+
'🔐' => '1f510',
|
661 |
+
'🔑' => '1f511',
|
662 |
+
'🔒' => '1f512',
|
663 |
+
'🔓' => '1f513',
|
664 |
+
'🔔' => '1f514',
|
665 |
+
'🔖' => '1f516',
|
666 |
+
'🔗' => '1f517',
|
667 |
+
'🔘' => '1f518',
|
668 |
+
'🔙' => '1f519',
|
669 |
+
'🔚' => '1f51a',
|
670 |
+
'🔛' => '1f51b',
|
671 |
+
'🔜' => '1f51c',
|
672 |
+
'🔝' => '1f51d',
|
673 |
+
'🔞' => '1f51e',
|
674 |
+
'🔟' => '1f51f',
|
675 |
+
'🔠' => '1f520',
|
676 |
+
'🔡' => '1f521',
|
677 |
+
'🔢' => '1f522',
|
678 |
+
'🔣' => '1f523',
|
679 |
+
'🔤' => '1f524',
|
680 |
+
'🔥' => '1f525',
|
681 |
+
'🔦' => '1f526',
|
682 |
+
'🔧' => '1f527',
|
683 |
+
'🔨' => '1f528',
|
684 |
+
'🔩' => '1f529',
|
685 |
+
'🔪' => '1f52a',
|
686 |
+
'🔫' => '1f52b',
|
687 |
+
'🔮' => '1f52e',
|
688 |
+
'🔯' => '1f52f',
|
689 |
+
'🔰' => '1f530',
|
690 |
+
'🔱' => '1f531',
|
691 |
+
'🔲' => '1f532',
|
692 |
+
'🔳' => '1f533',
|
693 |
+
'🔴' => '1f534',
|
694 |
+
'🔵' => '1f535',
|
695 |
+
'🔶' => '1f536',
|
696 |
+
'🔷' => '1f537',
|
697 |
+
'🔸' => '1f538',
|
698 |
+
'🔹' => '1f539',
|
699 |
+
'🔺' => '1f53a',
|
700 |
+
'🔻' => '1f53b',
|
701 |
+
'🔼' => '1f53c',
|
702 |
+
'🔽' => '1f53d',
|
703 |
+
'🕐' => '1f550',
|
704 |
+
'🕑' => '1f551',
|
705 |
+
'🕒' => '1f552',
|
706 |
+
'🕓' => '1f553',
|
707 |
+
'🕔' => '1f554',
|
708 |
+
'🕕' => '1f555',
|
709 |
+
'🕖' => '1f556',
|
710 |
+
'🕗' => '1f557',
|
711 |
+
'🕘' => '1f558',
|
712 |
+
'🕙' => '1f559',
|
713 |
+
'🕚' => '1f55a',
|
714 |
+
'🕛' => '1f55b',
|
715 |
+
'🗻' => '1f5fb',
|
716 |
+
'🗼' => '1f5fc',
|
717 |
+
'🗽' => '1f5fd',
|
718 |
+
'🗾' => '1f5fe',
|
719 |
+
'🗿' => '1f5ff',
|
720 |
+
'😀' => '1f600',
|
721 |
+
'😇' => '1f607',
|
722 |
+
'😈' => '1f608',
|
723 |
+
'😎' => '1f60e',
|
724 |
+
'😐' => '1f610',
|
725 |
+
'😑' => '1f611',
|
726 |
+
'😕' => '1f615',
|
727 |
+
'😗' => '1f617',
|
728 |
+
'😙' => '1f619',
|
729 |
+
'😛' => '1f61b',
|
730 |
+
'😟' => '1f61f',
|
731 |
+
'😦' => '1f626',
|
732 |
+
'😧' => '1f627',
|
733 |
+
'😬' => '1f62c',
|
734 |
+
'😮' => '1f62e',
|
735 |
+
'😯' => '1f62f',
|
736 |
+
'😴' => '1f634',
|
737 |
+
'😶' => '1f636',
|
738 |
+
'🚁' => '1f681',
|
739 |
+
'🚂' => '1f682',
|
740 |
+
'🚆' => '1f686',
|
741 |
+
'🚈' => '1f688',
|
742 |
+
'🚊' => '1f68a',
|
743 |
+
'🚍' => '1f68d',
|
744 |
+
'🚎' => '1f68e',
|
745 |
+
'🚐' => '1f690',
|
746 |
+
'🚔' => '1f694',
|
747 |
+
'🚖' => '1f696',
|
748 |
+
'🚘' => '1f698',
|
749 |
+
'🚛' => '1f69b',
|
750 |
+
'🚜' => '1f69c',
|
751 |
+
'🚝' => '1f69d',
|
752 |
+
'🚞' => '1f69e',
|
753 |
+
'🚟' => '1f69f',
|
754 |
+
'🚠' => '1f6a0',
|
755 |
+
'🚡' => '1f6a1',
|
756 |
+
'🚣' => '1f6a3',
|
757 |
+
'🚦' => '1f6a6',
|
758 |
+
'🚮' => '1f6ae',
|
759 |
+
'🚯' => '1f6af',
|
760 |
+
'🚰' => '1f6b0',
|
761 |
+
'🚱' => '1f6b1',
|
762 |
+
'🚳' => '1f6b3',
|
763 |
+
'🚴' => '1f6b4',
|
764 |
+
'🚵' => '1f6b5',
|
765 |
+
'🚷' => '1f6b7',
|
766 |
+
'🚸' => '1f6b8',
|
767 |
+
'🚿' => '1f6bf',
|
768 |
+
'🛁' => '1f6c1',
|
769 |
+
'🛂' => '1f6c2',
|
770 |
+
'🛃' => '1f6c3',
|
771 |
+
'🛄' => '1f6c4',
|
772 |
+
'🛅' => '1f6c5',
|
773 |
+
'🌍' => '1f30d',
|
774 |
+
'🌎' => '1f30e',
|
775 |
+
'🌐' => '1f310',
|
776 |
+
'🌒' => '1f312',
|
777 |
+
'🌖' => '1f316',
|
778 |
+
'🌗' => '1f317',
|
779 |
+
'🌘' => '1f318',
|
780 |
+
'🌚' => '1f31a',
|
781 |
+
'🌜' => '1f31c',
|
782 |
+
'🌝' => '1f31d',
|
783 |
+
'🌞' => '1f31e',
|
784 |
+
'🌲' => '1f332',
|
785 |
+
'🌳' => '1f333',
|
786 |
+
'🍋' => '1f34b',
|
787 |
+
'🍐' => '1f350',
|
788 |
+
'🍼' => '1f37c',
|
789 |
+
'🏇' => '1f3c7',
|
790 |
+
'🏉' => '1f3c9',
|
791 |
+
'🏤' => '1f3e4',
|
792 |
+
'🐀' => '1f400',
|
793 |
+
'🐁' => '1f401',
|
794 |
+
'🐂' => '1f402',
|
795 |
+
'🐃' => '1f403',
|
796 |
+
'🐄' => '1f404',
|
797 |
+
'🐅' => '1f405',
|
798 |
+
'🐆' => '1f406',
|
799 |
+
'🐇' => '1f407',
|
800 |
+
'🐈' => '1f408',
|
801 |
+
'🐉' => '1f409',
|
802 |
+
'🐊' => '1f40a',
|
803 |
+
'🐋' => '1f40b',
|
804 |
+
'🐏' => '1f40f',
|
805 |
+
'🐐' => '1f410',
|
806 |
+
'🐓' => '1f413',
|
807 |
+
'🐕' => '1f415',
|
808 |
+
'🐖' => '1f416',
|
809 |
+
'🐪' => '1f42a',
|
810 |
+
'👥' => '1f465',
|
811 |
+
'👬' => '1f46c',
|
812 |
+
'👭' => '1f46d',
|
813 |
+
'💭' => '1f4ad',
|
814 |
+
'💶' => '1f4b6',
|
815 |
+
'💷' => '1f4b7',
|
816 |
+
'📬' => '1f4ec',
|
817 |
+
'📭' => '1f4ed',
|
818 |
+
'📯' => '1f4ef',
|
819 |
+
'📵' => '1f4f5',
|
820 |
+
'🔀' => '1f500',
|
821 |
+
'🔁' => '1f501',
|
822 |
+
'🔂' => '1f502',
|
823 |
+
'🔄' => '1f504',
|
824 |
+
'🔅' => '1f505',
|
825 |
+
'🔆' => '1f506',
|
826 |
+
'🔇' => '1f507',
|
827 |
+
'🔉' => '1f509',
|
828 |
+
'🔕' => '1f515',
|
829 |
+
'🔬' => '1f52c',
|
830 |
+
'🔭' => '1f52d',
|
831 |
+
'🕜' => '1f55c',
|
832 |
+
'🕝' => '1f55d',
|
833 |
+
'🕞' => '1f55e',
|
834 |
+
'🕟' => '1f55f',
|
835 |
+
'🕠' => '1f560',
|
836 |
+
'🕡' => '1f561',
|
837 |
+
'🕢' => '1f562',
|
838 |
+
'🕣' => '1f563',
|
839 |
+
'🕤' => '1f564',
|
840 |
+
'🕥' => '1f565',
|
841 |
+
'🕦' => '1f566',
|
842 |
+
'🕧' => '1f567',
|
843 |
+
);
|
api/lib/twitter-api-emoji.php
DELETED
File without changes
|
api/lib/twitter-api-unicode.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* UTF-8 / Unicode utilities.
|
4 |
+
* Not currently used by plugin - just used in tests
|
5 |
+
*/
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Utility resolves UTF-8 bytes to array of code points
|
10 |
+
*/
|
11 |
+
function twitter_api_utf8_array( $s ){
|
12 |
+
$a = array();
|
13 |
+
$len = strlen($s);
|
14 |
+
for( $i = 0; $i < $len; $i++ ){
|
15 |
+
$c = $s{ $i };
|
16 |
+
$n = ord( $c );
|
17 |
+
// 7-bit ASCII
|
18 |
+
if( 0 === ( $n & 128 ) ){
|
19 |
+
$a[] = $n;
|
20 |
+
unset( $t );
|
21 |
+
}
|
22 |
+
// Subsequent 10xxxxxx character
|
23 |
+
else if( isset($t) && ( $n & 192 ) === 128 ){
|
24 |
+
$t <<= 6;
|
25 |
+
$t |= ( $n & 63 );
|
26 |
+
}
|
27 |
+
// Leading char in 2 byte sequence "110xxxxx"
|
28 |
+
else if( ( $n & 224 ) === 192 ){
|
29 |
+
isset( $t ) and $a [] = $t;
|
30 |
+
$t = ( $n & 31 );
|
31 |
+
}
|
32 |
+
// Leading char in 3 byte sequence "1110xxxx"
|
33 |
+
else if( ( $n & 240 ) === 224 ){
|
34 |
+
isset( $t ) and $a [] = $t;
|
35 |
+
$t = ( $n & 15 );
|
36 |
+
}
|
37 |
+
// Leading char in 4 byte sequence "11110xxx"
|
38 |
+
else if( ( $n & 248 ) === 240 ){
|
39 |
+
isset( $t ) and $a [] = $t;
|
40 |
+
$t = ( $n & 7 );
|
41 |
+
}
|
42 |
+
else {
|
43 |
+
throw new Exception('Invalid utf8 string, unexpected character at offset '.$i);
|
44 |
+
}
|
45 |
+
}
|
46 |
+
// left over
|
47 |
+
isset( $t ) and $a [] = $t;
|
48 |
+
return $a;
|
49 |
+
}
|
50 |
+
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Encode a Unicode code point to a utf-8 encoded string
|
54 |
+
* @example functions/enc/utf8_chr.php
|
55 |
+
* @param int Unicode code point up to 0x10FFFF
|
56 |
+
* @return string multibyte character sequence
|
57 |
+
*/
|
58 |
+
function twitter_api_utf8_chr( $u ){
|
59 |
+
if( 127 === ( $u | 127 ) ){
|
60 |
+
// 7-bit ASCII
|
61 |
+
return chr( $u );
|
62 |
+
}
|
63 |
+
// Double byte sequence ( < 0x800 )
|
64 |
+
// 00000yyy yyzzzzzz ==> 110yyyyy 10zzzzzz
|
65 |
+
// if( $u < 0x800 ) {
|
66 |
+
if( 0 === ( $u & 0xFFFFF800 ) ){
|
67 |
+
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
68 |
+
$c = chr( ($u>>=6) & 31 | 192 ) . $c; // "110yyyyy"
|
69 |
+
}
|
70 |
+
// Triple byte sequence ( < 0x10000 )
|
71 |
+
// xxxxyyyy yyzzzzzz ==> 1110xxxx 10yyyyyy 10zzzzzz
|
72 |
+
// else if( $u < 0x10000 ) {
|
73 |
+
else if( 0 === ( $u & 0xFFFF0000 ) ){
|
74 |
+
// Table 3-7 in the Unicode 5.0 standard disalows D800-DFFF:
|
75 |
+
//if( $u >= 0xD800 && $u <= 0xDFFF ){
|
76 |
+
// trigger_error("Unicode code point $u is invalid", E_USER_NOTICE );
|
77 |
+
//}
|
78 |
+
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
79 |
+
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy"
|
80 |
+
$c = chr( ($u>>=6) & 15 | 224 ) . $c; // "1110xxxx"
|
81 |
+
}
|
82 |
+
// Four byte sequence ( < 0x10FFFF )
|
83 |
+
// 000wwwxx xxxxyyyy yyzzzzzz ==> 11110www 10xxxxxx 10yyyyyy 10zzzzzz
|
84 |
+
// else if( $u <= 0x10FFFF ) {
|
85 |
+
else if( 0 === ( $u & 0xE0000000 ) ){
|
86 |
+
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
87 |
+
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy"
|
88 |
+
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10xxxxxx"
|
89 |
+
$c = chr( ($u>>=6) & 7 | 240 ) . $c; // "11110www"
|
90 |
+
}
|
91 |
+
else {
|
92 |
+
// integer too big
|
93 |
+
trigger_error("Unicode code point too large, $u", E_USER_NOTICE );
|
94 |
+
$c = '?';
|
95 |
+
}
|
96 |
+
return $c;
|
97 |
+
}
|
98 |
+
|
99 |
+
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Convert array of unicodes to hex string for use in URLs or class names
|
103 |
+
*/
|
104 |
+
function twitter_api_unicode_implode( array $codes, $glue = '-' ){
|
105 |
+
foreach( $codes as $i => $n ){
|
106 |
+
$codes[$i] = sprintf('%04x', $n );
|
107 |
+
}
|
108 |
+
return implode( $glue, $codes );
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
/**
|
113 |
+
* split a utf-8 string into a visual representation of single bytes
|
114 |
+
*/
|
115 |
+
function twitter_api_unicode_debug_string( $raw ){
|
116 |
+
$debug = array();
|
117 |
+
for( $i = 0; $i < strlen($raw); $i++ ){
|
118 |
+
$debug[] = sprintf( '\\x%0X', ord( $raw{$i} ) );
|
119 |
+
}
|
120 |
+
return implode('',$debug);
|
121 |
+
}
|
122 |
+
|
api/lib/twitter-api-utils.php
CHANGED
@@ -195,103 +195,47 @@ function twitter_api_strip_quadruple_bytes( $text ){
|
|
195 |
* Should be run after htmlifying tweet and before stripping quadruple bytes
|
196 |
*/
|
197 |
function twitter_api_replace_emoji( $text, $callback = 'twitter_api_replace_emoji_callback' ){
|
198 |
-
|
199 |
-
// these codes are common to the first byte in all emoji that *might* be matched
|
200 |
-
if( ! preg_match('/[\xF0\xE2-\xE3\x23-\x39]/', $text ) ){
|
201 |
-
return $text;
|
202 |
-
}
|
203 |
-
// To keep regexp simpler, protect common multibyte characters we want to keep
|
204 |
-
static $protect_keys, $protect_vals;
|
205 |
-
if( ! isset($protect_keys) ){
|
206 |
-
$protect = array (
|
207 |
-
'\\u2017' => "\xE2\x80\x98", // lsquo
|
208 |
-
'\\u2018' => "\xE2\x80\x99", // rsquo
|
209 |
-
'\\u201C' => "\xE2\x80\x9C", // ldquo
|
210 |
-
'\\u201D' => "\xE2\x80\x9D", // rdquo
|
211 |
-
);
|
212 |
-
$protect_keys = array_keys( $protect );
|
213 |
-
$protect_vals = array_values( $protect );
|
214 |
-
}
|
215 |
-
$text = str_replace( $protect_vals, $protect_keys, $text );
|
216 |
-
// Do Emoji replacement ad replace protected characters afterwards
|
217 |
-
$text = preg_replace_callback('/(?:\xF0\x9F\x87[\xA6-\xBA]\xF0\x9F\x87[\xA6-\xBA]|\xF0\x9F[\x80\x83\x85-\x86\x88-\x89\x8C-\x95\x97-\x9B][\x80-\xBF]|[\xE2-\xE3][\x80\x81\x84\x86\x8A\x8C\x8F\x93\x96-\x9E\xA4\xAC-\xAD][\x80-\x82\x84-\x9D\xA0-\xA6\xA8-\xAC\xB0\xB2-\xB6\xB9-\xBF]|[\x23-\x39]\xE2\x83\xA3)/', $callback, $text );
|
218 |
-
$text = str_replace( $protect_keys, $protect_vals, $text );
|
219 |
-
return $text;
|
220 |
-
}
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
/**
|
225 |
-
* Convert array of unicodes to hex string for use in URLs or class names
|
226 |
-
*/
|
227 |
-
function twitter_api_implode_unicode( array $codes, $glue = '-' ){
|
228 |
-
foreach( $codes as $i => $n ){
|
229 |
-
$codes[$i] = sprintf('%04x', $n );
|
230 |
-
}
|
231 |
-
return implode( $glue, $codes );
|
232 |
}
|
233 |
|
234 |
|
235 |
|
236 |
/**
|
237 |
-
*
|
|
|
238 |
*/
|
239 |
-
function
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
$c = $s{ $i };
|
244 |
-
$n = ord( $c );
|
245 |
-
// 7-bit ASCII
|
246 |
-
if( 0 === ( $n & 128 ) ){
|
247 |
-
$a[] = $n;
|
248 |
-
unset( $t );
|
249 |
-
}
|
250 |
-
// Subsequent 10xxxxxx character
|
251 |
-
else if( isset($t) && ( $n & 192 ) === 128 ){
|
252 |
-
$t <<= 6;
|
253 |
-
$t |= ( $n & 63 );
|
254 |
-
}
|
255 |
-
// Leading char in 2 byte sequence "110xxxxx"
|
256 |
-
else if( ( $n & 224 ) === 192 ){
|
257 |
-
isset( $t ) and $a [] = $t;
|
258 |
-
$t = ( $n & 31 );
|
259 |
-
}
|
260 |
-
// Leading char in 3 byte sequence "1110xxxx"
|
261 |
-
else if( ( $n & 240 ) === 224 ){
|
262 |
-
isset( $t ) and $a [] = $t;
|
263 |
-
$t = ( $n & 15 );
|
264 |
-
}
|
265 |
-
// Leading char in 4 byte sequence "11110xxx"
|
266 |
-
else if( ( $n & 248 ) === 240 ){
|
267 |
-
isset( $t ) and $a [] = $t;
|
268 |
-
$t = ( $n & 7 );
|
269 |
}
|
270 |
-
|
271 |
-
|
|
|
272 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
}
|
274 |
-
// left over
|
275 |
-
isset( $t ) and $a [] = $t;
|
276 |
-
return $a;
|
277 |
}
|
278 |
|
279 |
|
280 |
|
281 |
/**
|
282 |
-
*
|
283 |
-
* @
|
|
|
284 |
*/
|
285 |
-
function
|
286 |
-
|
287 |
-
|
288 |
-
$
|
289 |
-
$html = '<img src="https://abs.twimg.com/emoji/v1/72x72/'.$class.'.png" style="width:1em;" class="emoji emoji-'.$class.'" />';
|
290 |
-
return $html;
|
291 |
}
|
292 |
-
|
293 |
-
|
294 |
-
return '';
|
295 |
}
|
296 |
}
|
297 |
|
195 |
* Should be run after htmlifying tweet and before stripping quadruple bytes
|
196 |
*/
|
197 |
function twitter_api_replace_emoji( $text, $callback = 'twitter_api_replace_emoji_callback' ){
|
198 |
+
return preg_replace_callback('/(?:\xF0\x9F\x87[\xA6-\xBA]\xF0\x9F\x87[\xA6-\xBA]|\xF0\x9F[\x80\x83\x85-\x86\x88-\x89\x8C-\x95\x97-\x9B][\x80-\xBF]|[\xE2-\xE3][\x80\x81\x84\x86\x8A\x8C\x8F\x93\x96-\x9E\xA4\xAC-\xAD][\x80-\x82\x84-\x9D\xA0-\xA6\xA8-\xAC\xB0\xB2-\xB6\xB9-\xBF]|[\x23-\x39]\xE2\x83\xA3)/', $callback, $text );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
}
|
200 |
|
201 |
|
202 |
|
203 |
/**
|
204 |
+
* Default Emoji replacement callback
|
205 |
+
* @internal
|
206 |
*/
|
207 |
+
function twitter_api_replace_emoji_callback( array $match ){
|
208 |
+
try {
|
209 |
+
if( empty($match[0]) ){
|
210 |
+
return '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
}
|
212 |
+
$ref = twitter_api_emoji_ref( $match[0] );
|
213 |
+
if( ! $ref ){
|
214 |
+
return $match[0];
|
215 |
}
|
216 |
+
$html = '<img src="https://abs.twimg.com/emoji/v1/72x72/'.$ref.'.png" style="width:1em;" class="emoji emoji-'.$ref.'" />';
|
217 |
+
return $html;
|
218 |
+
}
|
219 |
+
catch( Exception $e ){
|
220 |
+
WP_DEBUG and trigger_error( $e->getMessage(), E_USER_WARNING );
|
221 |
+
return '';
|
222 |
}
|
|
|
|
|
|
|
223 |
}
|
224 |
|
225 |
|
226 |
|
227 |
/**
|
228 |
+
* Get a hex name for a single emoji symbol
|
229 |
+
* @param string raw bytes, e.g. "\xF0\x9F\x98\x81"
|
230 |
+
* @return string hex name suitable for creating a class or ID e.g. "1f601" or "1f1ec-1f1e7" for compound symbols
|
231 |
*/
|
232 |
+
function twitter_api_emoji_ref( $raw ){
|
233 |
+
static $emoji;
|
234 |
+
if( ! isset($emoji) ){
|
235 |
+
$emoji = include twitter_api_basedir().'/inc/return-emoji.php';
|
|
|
|
|
236 |
}
|
237 |
+
if( isset($emoji[$raw]) ){
|
238 |
+
return $emoji[$raw];
|
|
|
239 |
}
|
240 |
}
|
241 |
|
api/test/bootstrap.php
CHANGED
@@ -15,4 +15,4 @@ function esc_html( $text ){
|
|
15 |
|
16 |
require __DIR__.'/../twitter-api.php';
|
17 |
|
18 |
-
twitter_api_include('utils','core');
|
15 |
|
16 |
require __DIR__.'/../twitter-api.php';
|
17 |
|
18 |
+
twitter_api_include('utils','core','unicode');
|
api/test/utils/EmojiTest.php
CHANGED
@@ -6,15 +6,21 @@
|
|
6 |
class EmojiTest extends PHPUnit_Framework_TestCase {
|
7 |
|
8 |
|
9 |
-
public function _replace_blank(){
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
}
|
12 |
|
13 |
|
14 |
private function get_all(){
|
15 |
static $emoji;
|
16 |
if( ! isset($emoji) ){
|
17 |
-
$emoji = include
|
18 |
}
|
19 |
return $emoji;
|
20 |
}
|
@@ -25,7 +31,7 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
25 |
*/
|
26 |
public function testSingleMatches(){
|
27 |
$blanker = array( $this, '_replace_blank' );
|
28 |
-
foreach( $this->get_all() as $
|
29 |
$replaced = twitter_api_replace_emoji( 'o'.$raw.'k', $blanker );
|
30 |
$this->assertEquals( 'ok', $replaced );
|
31 |
}
|
@@ -37,7 +43,7 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
37 |
*/
|
38 |
public function testTotalMatch(){
|
39 |
$blanker = array( $this, '_replace_blank' );
|
40 |
-
$splurge = implode( '', $this->get_all() );
|
41 |
$replaced = twitter_api_replace_emoji( 'o'.$splurge.'k', $blanker );
|
42 |
$this->assertEquals( 'ok', $replaced );
|
43 |
}
|
@@ -47,9 +53,9 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
47 |
* Convert matched bytes back to unicode string reference
|
48 |
*/
|
49 |
public function testAllSequencesResolveUnicode(){
|
50 |
-
foreach( $this->get_all() as $
|
51 |
$codes = twitter_api_utf8_array( $raw );
|
52 |
-
$ucode =
|
53 |
$this->assertEquals( $key, $ucode );
|
54 |
}
|
55 |
}
|
@@ -59,7 +65,7 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
59 |
* Test default URL replacement
|
60 |
*/
|
61 |
public function testDefaultUrlReplacement(){
|
62 |
-
foreach( $this->get_all() as $
|
63 |
$html = twitter_api_replace_emoji( $raw );
|
64 |
$want = '<img src="https://abs.twimg.com/emoji/v1/72x72/'.$key.'.png" style="width:1em;" class="emoji emoji-'.$key.'" />';
|
65 |
$this->assertEquals( $want, $html );
|
@@ -68,7 +74,7 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
68 |
|
69 |
|
70 |
/**
|
71 |
-
* Test false positives
|
72 |
*/
|
73 |
public function testFancyQuotesIntact(){
|
74 |
$test = array (
|
@@ -77,78 +83,15 @@ class EmojiTest extends PHPUnit_Framework_TestCase {
|
|
77 |
0x201C,
|
78 |
0x201D,
|
79 |
);
|
80 |
-
$
|
81 |
foreach( $test as $code ){
|
82 |
$hex = sprintf('%04x', $code );
|
83 |
-
$leave =
|
84 |
-
$bytes =
|
85 |
-
$
|
86 |
-
$this->assertEquals(
|
87 |
}
|
88 |
}
|
89 |
|
90 |
|
91 |
-
|
92 |
-
/**
|
93 |
-
* split a utf-8 string into a visual representation of single bytes
|
94 |
-
*/
|
95 |
-
private function utf8_debug_string( $raw ){
|
96 |
-
$debug = array();
|
97 |
-
for( $i = 0; $i < strlen($raw); $i++ ){
|
98 |
-
$debug[] = sprintf( '\\x%0X', ord( $raw{$i} ) );
|
99 |
-
}
|
100 |
-
return implode('',$debug);
|
101 |
-
}
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
/**
|
106 |
-
* Encode a Unicode code point to a utf-8 encoded string
|
107 |
-
* @example functions/enc/utf8_chr.php
|
108 |
-
* @param int Unicode code point up to 0x10FFFF
|
109 |
-
* @return string multibyte character sequence
|
110 |
-
*/
|
111 |
-
private function utf8_chr( $u ){
|
112 |
-
if( 127 === ( $u | 127 ) ){
|
113 |
-
// 7-bit ASCII
|
114 |
-
return chr( $u );
|
115 |
-
}
|
116 |
-
// Double byte sequence ( < 0x800 )
|
117 |
-
// 00000yyy yyzzzzzz ==> 110yyyyy 10zzzzzz
|
118 |
-
// if( $u < 0x800 ) {
|
119 |
-
if( 0 === ( $u & 0xFFFFF800 ) ){
|
120 |
-
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
121 |
-
$c = chr( ($u>>=6) & 31 | 192 ) . $c; // "110yyyyy"
|
122 |
-
}
|
123 |
-
// Triple byte sequence ( < 0x10000 )
|
124 |
-
// xxxxyyyy yyzzzzzz ==> 1110xxxx 10yyyyyy 10zzzzzz
|
125 |
-
// else if( $u < 0x10000 ) {
|
126 |
-
else if( 0 === ( $u & 0xFFFF0000 ) ){
|
127 |
-
// Table 3-7 in the Unicode 5.0 standard disalows D800-DFFF:
|
128 |
-
//if( $u >= 0xD800 && $u <= 0xDFFF ){
|
129 |
-
// trigger_error("Unicode code point $u is invalid", E_USER_NOTICE );
|
130 |
-
//}
|
131 |
-
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
132 |
-
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy"
|
133 |
-
$c = chr( ($u>>=6) & 15 | 224 ) . $c; // "1110xxxx"
|
134 |
-
}
|
135 |
-
// Four byte sequence ( < 0x10FFFF )
|
136 |
-
// 000wwwxx xxxxyyyy yyzzzzzz ==> 11110www 10xxxxxx 10yyyyyy 10zzzzzz
|
137 |
-
// else if( $u <= 0x10FFFF ) {
|
138 |
-
else if( 0 === ( $u & 0xE0000000 ) ){
|
139 |
-
$c = chr( $u & 63 | 128 ); // "10zzzzzz"
|
140 |
-
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy"
|
141 |
-
$c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10xxxxxx"
|
142 |
-
$c = chr( ($u>>=6) & 7 | 240 ) . $c; // "11110www"
|
143 |
-
}
|
144 |
-
else {
|
145 |
-
// integer too big
|
146 |
-
trigger_error("Unicode code point too large, $u", E_USER_NOTICE );
|
147 |
-
$c = '?';
|
148 |
-
}
|
149 |
-
return $c;
|
150 |
-
}
|
151 |
-
|
152 |
}
|
153 |
-
|
154 |
-
|
6 |
class EmojiTest extends PHPUnit_Framework_TestCase {
|
7 |
|
8 |
|
9 |
+
public function _replace_blank( array $match ){
|
10 |
+
$ref = twitter_api_emoji_ref( $match[0] );
|
11 |
+
return $ref ? '' : 'invalid U+'.implode('',twitter_api_utf8_array($match[0]));
|
12 |
+
}
|
13 |
+
|
14 |
+
public function _replace_valid( array $match ){
|
15 |
+
$ref = twitter_api_emoji_ref( $match[0] );
|
16 |
+
return $ref ? 'valid' : 'invalid';
|
17 |
}
|
18 |
|
19 |
|
20 |
private function get_all(){
|
21 |
static $emoji;
|
22 |
if( ! isset($emoji) ){
|
23 |
+
$emoji = include twitter_api_basedir().'/inc/return-emoji.php';
|
24 |
}
|
25 |
return $emoji;
|
26 |
}
|
31 |
*/
|
32 |
public function testSingleMatches(){
|
33 |
$blanker = array( $this, '_replace_blank' );
|
34 |
+
foreach( $this->get_all() as $raw => $key ){
|
35 |
$replaced = twitter_api_replace_emoji( 'o'.$raw.'k', $blanker );
|
36 |
$this->assertEquals( 'ok', $replaced );
|
37 |
}
|
43 |
*/
|
44 |
public function testTotalMatch(){
|
45 |
$blanker = array( $this, '_replace_blank' );
|
46 |
+
$splurge = implode( '', array_keys( $this->get_all() ) );
|
47 |
$replaced = twitter_api_replace_emoji( 'o'.$splurge.'k', $blanker );
|
48 |
$this->assertEquals( 'ok', $replaced );
|
49 |
}
|
53 |
* Convert matched bytes back to unicode string reference
|
54 |
*/
|
55 |
public function testAllSequencesResolveUnicode(){
|
56 |
+
foreach( $this->get_all() as $raw => $key ){
|
57 |
$codes = twitter_api_utf8_array( $raw );
|
58 |
+
$ucode = twitter_api_unicode_implode( $codes );
|
59 |
$this->assertEquals( $key, $ucode );
|
60 |
}
|
61 |
}
|
65 |
* Test default URL replacement
|
66 |
*/
|
67 |
public function testDefaultUrlReplacement(){
|
68 |
+
foreach( $this->get_all() as $raw => $key ){
|
69 |
$html = twitter_api_replace_emoji( $raw );
|
70 |
$want = '<img src="https://abs.twimg.com/emoji/v1/72x72/'.$key.'.png" style="width:1em;" class="emoji emoji-'.$key.'" />';
|
71 |
$this->assertEquals( $want, $html );
|
74 |
|
75 |
|
76 |
/**
|
77 |
+
* Test common false positives
|
78 |
*/
|
79 |
public function testFancyQuotesIntact(){
|
80 |
$test = array (
|
83 |
0x201C,
|
84 |
0x201D,
|
85 |
);
|
86 |
+
$validator = array( $this, '_replace_valid' );
|
87 |
foreach( $test as $code ){
|
88 |
$hex = sprintf('%04x', $code );
|
89 |
+
$leave = twitter_api_utf8_chr( $code );
|
90 |
+
$bytes = twitter_api_unicode_debug_string( $leave );
|
91 |
+
$valid = twitter_api_replace_emoji( $leave, $validator );
|
92 |
+
$this->assertEquals( 'invalid', $valid, 'U+'.$hex.' wrongly matched: '.$bytes );
|
93 |
}
|
94 |
}
|
95 |
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
}
|
|
|
|
api/test/utils/UnicodeTest.php
CHANGED
@@ -10,6 +10,11 @@ class UnicodeTest extends PHPUnit_Framework_TestCase {
|
|
10 |
$this->assertEquals( array(97,98,99), $ints );
|
11 |
}
|
12 |
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
public function testTwoByteCharacter(){
|
15 |
// U+00A9 copyright symbol
|
@@ -18,6 +23,12 @@ class UnicodeTest extends PHPUnit_Framework_TestCase {
|
|
18 |
$this->assertCount( 1, $ints );
|
19 |
$this->assertEquals( 0x00A9, $ints[0] );
|
20 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
|
23 |
public function testThreeByteCharacter(){
|
@@ -28,6 +39,11 @@ class UnicodeTest extends PHPUnit_Framework_TestCase {
|
|
28 |
$this->assertEquals( 0x2122, $ints[0] );
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
|
33 |
}
|
10 |
$this->assertEquals( array(97,98,99), $ints );
|
11 |
}
|
12 |
|
13 |
+
public function testAsciiPassthroughReverse(){
|
14 |
+
$chr = twitter_api_utf8_chr( 97 );
|
15 |
+
$this->assertEquals( 'a', $chr );
|
16 |
+
}
|
17 |
+
|
18 |
|
19 |
public function testTwoByteCharacter(){
|
20 |
// U+00A9 copyright symbol
|
23 |
$this->assertCount( 1, $ints );
|
24 |
$this->assertEquals( 0x00A9, $ints[0] );
|
25 |
}
|
26 |
+
|
27 |
+
|
28 |
+
public function testTwoByteCharacterReverse(){
|
29 |
+
$chr = twitter_api_utf8_chr( 0x00A9 );
|
30 |
+
$this->assertEquals( "\xC2\xA9", $chr );
|
31 |
+
}
|
32 |
|
33 |
|
34 |
public function testThreeByteCharacter(){
|
39 |
$this->assertEquals( 0x2122, $ints[0] );
|
40 |
}
|
41 |
|
42 |
+
|
43 |
+
public function testThreeByteCharacterReverse(){
|
44 |
+
$chr = twitter_api_utf8_chr( 0x2122 );
|
45 |
+
$this->assertEquals( "\xE2\x84\xA2", $chr );
|
46 |
+
}
|
47 |
|
48 |
|
49 |
}
|
api/test/utils/inc-emoji.php
DELETED
@@ -1,843 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
return array (
|
3 |
-
'1f601' => '😁',
|
4 |
-
'1f602' => '😂',
|
5 |
-
'1f603' => '😃',
|
6 |
-
'1f604' => '😄',
|
7 |
-
'1f605' => '😅',
|
8 |
-
'1f606' => '😆',
|
9 |
-
'1f609' => '😉',
|
10 |
-
'1f60a' => '😊',
|
11 |
-
'1f60b' => '😋',
|
12 |
-
'1f60c' => '😌',
|
13 |
-
'1f60d' => '😍',
|
14 |
-
'1f60f' => '😏',
|
15 |
-
'1f612' => '😒',
|
16 |
-
'1f613' => '😓',
|
17 |
-
'1f614' => '😔',
|
18 |
-
'1f616' => '😖',
|
19 |
-
'1f618' => '😘',
|
20 |
-
'1f61a' => '😚',
|
21 |
-
'1f61c' => '😜',
|
22 |
-
'1f61d' => '😝',
|
23 |
-
'1f61e' => '😞',
|
24 |
-
'1f620' => '😠',
|
25 |
-
'1f621' => '😡',
|
26 |
-
'1f622' => '😢',
|
27 |
-
'1f623' => '😣',
|
28 |
-
'1f624' => '😤',
|
29 |
-
'1f625' => '😥',
|
30 |
-
'1f628' => '😨',
|
31 |
-
'1f629' => '😩',
|
32 |
-
'1f62a' => '😪',
|
33 |
-
'1f62b' => '😫',
|
34 |
-
'1f62d' => '😭',
|
35 |
-
'1f630' => '😰',
|
36 |
-
'1f631' => '😱',
|
37 |
-
'1f632' => '😲',
|
38 |
-
'1f633' => '😳',
|
39 |
-
'1f635' => '😵',
|
40 |
-
'1f637' => '😷',
|
41 |
-
'1f638' => '😸',
|
42 |
-
'1f639' => '😹',
|
43 |
-
'1f63a' => '😺',
|
44 |
-
'1f63b' => '😻',
|
45 |
-
'1f63c' => '😼',
|
46 |
-
'1f63d' => '😽',
|
47 |
-
'1f63e' => '😾',
|
48 |
-
'1f63f' => '😿',
|
49 |
-
'1f640' => '🙀',
|
50 |
-
'1f645' => '🙅',
|
51 |
-
'1f646' => '🙆',
|
52 |
-
'1f647' => '🙇',
|
53 |
-
'1f648' => '🙈',
|
54 |
-
'1f649' => '🙉',
|
55 |
-
'1f64a' => '🙊',
|
56 |
-
'1f64b' => '🙋',
|
57 |
-
'1f64c' => '🙌',
|
58 |
-
'1f64d' => '🙍',
|
59 |
-
'1f64e' => '🙎',
|
60 |
-
'1f64f' => '🙏',
|
61 |
-
2702 => '✂',
|
62 |
-
2705 => '✅',
|
63 |
-
2708 => '✈',
|
64 |
-
2709 => '✉',
|
65 |
-
'270a' => '✊',
|
66 |
-
'270b' => '✋',
|
67 |
-
'270c' => '✌',
|
68 |
-
'270f' => '✏',
|
69 |
-
2712 => '✒',
|
70 |
-
2714 => '✔',
|
71 |
-
2716 => '✖',
|
72 |
-
2728 => '✨',
|
73 |
-
2733 => '✳',
|
74 |
-
2734 => '✴',
|
75 |
-
2744 => '❄',
|
76 |
-
2747 => '❇',
|
77 |
-
'274c' => '❌',
|
78 |
-
'274e' => '❎',
|
79 |
-
2753 => '❓',
|
80 |
-
2754 => '❔',
|
81 |
-
2755 => '❕',
|
82 |
-
2757 => '❗',
|
83 |
-
2764 => '❤',
|
84 |
-
2795 => '➕',
|
85 |
-
2796 => '➖',
|
86 |
-
2797 => '➗',
|
87 |
-
'27a1' => '➡',
|
88 |
-
'27b0' => '➰',
|
89 |
-
'1f680' => '🚀',
|
90 |
-
'1f683' => '🚃',
|
91 |
-
'1f684' => '🚄',
|
92 |
-
'1f685' => '🚅',
|
93 |
-
'1f687' => '🚇',
|
94 |
-
'1f689' => '🚉',
|
95 |
-
'1f68c' => '🚌',
|
96 |
-
'1f68f' => '🚏',
|
97 |
-
'1f691' => '🚑',
|
98 |
-
'1f692' => '🚒',
|
99 |
-
'1f693' => '🚓',
|
100 |
-
'1f695' => '🚕',
|
101 |
-
'1f697' => '🚗',
|
102 |
-
'1f699' => '🚙',
|
103 |
-
'1f69a' => '🚚',
|
104 |
-
'1f6a2' => '🚢',
|
105 |
-
'1f6a4' => '🚤',
|
106 |
-
'1f6a5' => '🚥',
|
107 |
-
'1f6a7' => '🚧',
|
108 |
-
'1f6a8' => '🚨',
|
109 |
-
'1f6a9' => '🚩',
|
110 |
-
'1f6aa' => '🚪',
|
111 |
-
'1f6ab' => '🚫',
|
112 |
-
'1f6ac' => '🚬',
|
113 |
-
'1f6ad' => '🚭',
|
114 |
-
'1f6b2' => '🚲',
|
115 |
-
'1f6b6' => '🚶',
|
116 |
-
'1f6b9' => '🚹',
|
117 |
-
'1f6ba' => '🚺',
|
118 |
-
'1f6bb' => '🚻',
|
119 |
-
'1f6bc' => '🚼',
|
120 |
-
'1f6bd' => '🚽',
|
121 |
-
'1f6be' => '🚾',
|
122 |
-
'1f6c0' => '🛀',
|
123 |
-
'24c2' => 'Ⓜ',
|
124 |
-
'1f170' => '🅰',
|
125 |
-
'1f171' => '🅱',
|
126 |
-
'1f17e' => '🅾',
|
127 |
-
'1f17f' => '🅿',
|
128 |
-
'1f18e' => '🆎',
|
129 |
-
'1f191' => '🆑',
|
130 |
-
'1f192' => '🆒',
|
131 |
-
'1f193' => '🆓',
|
132 |
-
'1f194' => '🆔',
|
133 |
-
'1f195' => '🆕',
|
134 |
-
'1f196' => '🆖',
|
135 |
-
'1f197' => '🆗',
|
136 |
-
'1f198' => '🆘',
|
137 |
-
'1f199' => '🆙',
|
138 |
-
'1f19a' => '🆚',
|
139 |
-
'1f1e9-1f1ea' => '🇩🇪',
|
140 |
-
'1f1ec-1f1e7' => '🇬🇧',
|
141 |
-
'1f1e8-1f1f3' => '🇨🇳',
|
142 |
-
'1f1ef-1f1f5' => '🇯🇵',
|
143 |
-
'1f1f0-1f1f7' => '🇰🇷',
|
144 |
-
'1f1eb-1f1f7' => '🇫🇷',
|
145 |
-
'1f1ea-1f1f8' => '🇪🇸',
|
146 |
-
'1f1ee-1f1f9' => '🇮🇹',
|
147 |
-
'1f1fa-1f1f8' => '🇺🇸',
|
148 |
-
'1f1f7-1f1fa' => '🇷🇺',
|
149 |
-
'1f201' => '🈁',
|
150 |
-
'1f202' => '🈂',
|
151 |
-
'1f21a' => '🈚',
|
152 |
-
'1f22f' => '🈯',
|
153 |
-
'1f232' => '🈲',
|
154 |
-
'1f233' => '🈳',
|
155 |
-
'1f234' => '🈴',
|
156 |
-
'1f235' => '🈵',
|
157 |
-
'1f236' => '🈶',
|
158 |
-
'1f237' => '🈷',
|
159 |
-
'1f238' => '🈸',
|
160 |
-
'1f239' => '🈹',
|
161 |
-
'1f23a' => '🈺',
|
162 |
-
'1f250' => '🉐',
|
163 |
-
'1f251' => '🉑',
|
164 |
-
'203c' => '‼',
|
165 |
-
2049 => '⁉',
|
166 |
-
'0038-20e3' => '8⃣',
|
167 |
-
'0039-20e3' => '9⃣',
|
168 |
-
'0037-20e3' => '7⃣',
|
169 |
-
'0036-20e3' => '6⃣',
|
170 |
-
'0031-20e3' => '1⃣',
|
171 |
-
'0030-20e3' => '0⃣',
|
172 |
-
'0032-20e3' => '2⃣',
|
173 |
-
'0033-20e3' => '3⃣',
|
174 |
-
'0035-20e3' => '5⃣',
|
175 |
-
'0034-20e3' => '4⃣',
|
176 |
-
'0023-20e3' => '#⃣',
|
177 |
-
2122 => '™',
|
178 |
-
2139 => 'ℹ',
|
179 |
-
2194 => '↔',
|
180 |
-
2195 => '↕',
|
181 |
-
2196 => '↖',
|
182 |
-
2197 => '↗',
|
183 |
-
2198 => '↘',
|
184 |
-
2199 => '↙',
|
185 |
-
'21a9' => '↩',
|
186 |
-
'21aa' => '↪',
|
187 |
-
'231a' => '⌚',
|
188 |
-
'231b' => '⌛',
|
189 |
-
'23e9' => '⏩',
|
190 |
-
'23ea' => '⏪',
|
191 |
-
'23eb' => '⏫',
|
192 |
-
'23ec' => '⏬',
|
193 |
-
'23f0' => '⏰',
|
194 |
-
'23f3' => '⏳',
|
195 |
-
'25aa' => '▪',
|
196 |
-
'25ab' => '▫',
|
197 |
-
'25b6' => '▶',
|
198 |
-
'25c0' => '◀',
|
199 |
-
'25fb' => '◻',
|
200 |
-
'25fc' => '◼',
|
201 |
-
'25fd' => '◽',
|
202 |
-
'25fe' => '◾',
|
203 |
-
2600 => '☀',
|
204 |
-
2601 => '☁',
|
205 |
-
'260e' => '☎',
|
206 |
-
2611 => '☑',
|
207 |
-
2614 => '☔',
|
208 |
-
2615 => '☕',
|
209 |
-
'261d' => '☝',
|
210 |
-
'263a' => '☺',
|
211 |
-
2648 => '♈',
|
212 |
-
2649 => '♉',
|
213 |
-
'264a' => '♊',
|
214 |
-
'264b' => '♋',
|
215 |
-
'264c' => '♌',
|
216 |
-
'264d' => '♍',
|
217 |
-
'264e' => '♎',
|
218 |
-
'264f' => '♏',
|
219 |
-
2650 => '♐',
|
220 |
-
2651 => '♑',
|
221 |
-
2652 => '♒',
|
222 |
-
2653 => '♓',
|
223 |
-
2660 => '♠',
|
224 |
-
2663 => '♣',
|
225 |
-
2665 => '♥',
|
226 |
-
2666 => '♦',
|
227 |
-
2668 => '♨',
|
228 |
-
'267b' => '♻',
|
229 |
-
'267f' => '♿',
|
230 |
-
2693 => '⚓',
|
231 |
-
'26a0' => '⚠',
|
232 |
-
'26a1' => '⚡',
|
233 |
-
'26aa' => '⚪',
|
234 |
-
'26ab' => '⚫',
|
235 |
-
'26bd' => '⚽',
|
236 |
-
'26be' => '⚾',
|
237 |
-
'26c4' => '⛄',
|
238 |
-
'26c5' => '⛅',
|
239 |
-
'26ce' => '⛎',
|
240 |
-
'26d4' => '⛔',
|
241 |
-
'26ea' => '⛪',
|
242 |
-
'26f2' => '⛲',
|
243 |
-
'26f3' => '⛳',
|
244 |
-
'26f5' => '⛵',
|
245 |
-
'26fa' => '⛺',
|
246 |
-
'26fd' => '⛽',
|
247 |
-
2934 => '⤴',
|
248 |
-
2935 => '⤵',
|
249 |
-
'2b05' => '⬅',
|
250 |
-
'2b06' => '⬆',
|
251 |
-
'2b07' => '⬇',
|
252 |
-
'2b1b' => '⬛',
|
253 |
-
'2b1c' => '⬜',
|
254 |
-
'2b50' => '⭐',
|
255 |
-
'2b55' => '⭕',
|
256 |
-
3030 => '〰',
|
257 |
-
'303d' => '〽',
|
258 |
-
3297 => '㊗',
|
259 |
-
3299 => '㊙',
|
260 |
-
'1f004' => '🀄',
|
261 |
-
'1f0cf' => '🃏',
|
262 |
-
'1f300' => '🌀',
|
263 |
-
'1f301' => '🌁',
|
264 |
-
'1f302' => '🌂',
|
265 |
-
'1f303' => '🌃',
|
266 |
-
'1f304' => '🌄',
|
267 |
-
'1f305' => '🌅',
|
268 |
-
'1f306' => '🌆',
|
269 |
-
'1f307' => '🌇',
|
270 |
-
'1f308' => '🌈',
|
271 |
-
'1f309' => '🌉',
|
272 |
-
'1f30a' => '🌊',
|
273 |
-
'1f30b' => '🌋',
|
274 |
-
'1f30c' => '🌌',
|
275 |
-
'1f30f' => '🌏',
|
276 |
-
'1f311' => '🌑',
|
277 |
-
'1f313' => '🌓',
|
278 |
-
'1f314' => '🌔',
|
279 |
-
'1f315' => '🌕',
|
280 |
-
'1f319' => '🌙',
|
281 |
-
'1f31b' => '🌛',
|
282 |
-
'1f31f' => '🌟',
|
283 |
-
'1f320' => '🌠',
|
284 |
-
'1f330' => '🌰',
|
285 |
-
'1f331' => '🌱',
|
286 |
-
'1f334' => '🌴',
|
287 |
-
'1f335' => '🌵',
|
288 |
-
'1f337' => '🌷',
|
289 |
-
'1f338' => '🌸',
|
290 |
-
'1f339' => '🌹',
|
291 |
-
'1f33a' => '🌺',
|
292 |
-
'1f33b' => '🌻',
|
293 |
-
'1f33c' => '🌼',
|
294 |
-
'1f33d' => '🌽',
|
295 |
-
'1f33e' => '🌾',
|
296 |
-
'1f33f' => '🌿',
|
297 |
-
'1f340' => '🍀',
|
298 |
-
'1f341' => '🍁',
|
299 |
-
'1f342' => '🍂',
|
300 |
-
'1f343' => '🍃',
|
301 |
-
'1f344' => '🍄',
|
302 |
-
'1f345' => '🍅',
|
303 |
-
'1f346' => '🍆',
|
304 |
-
'1f347' => '🍇',
|
305 |
-
'1f348' => '🍈',
|
306 |
-
'1f349' => '🍉',
|
307 |
-
'1f34a' => '🍊',
|
308 |
-
'1f34c' => '🍌',
|
309 |
-
'1f34d' => '🍍',
|
310 |
-
'1f34e' => '🍎',
|
311 |
-
'1f34f' => '🍏',
|
312 |
-
'1f351' => '🍑',
|
313 |
-
'1f352' => '🍒',
|
314 |
-
'1f353' => '🍓',
|
315 |
-
'1f354' => '🍔',
|
316 |
-
'1f355' => '🍕',
|
317 |
-
'1f356' => '🍖',
|
318 |
-
'1f357' => '🍗',
|
319 |
-
'1f358' => '🍘',
|
320 |
-
'1f359' => '🍙',
|
321 |
-
'1f35a' => '🍚',
|
322 |
-
'1f35b' => '🍛',
|
323 |
-
'1f35c' => '🍜',
|
324 |
-
'1f35d' => '🍝',
|
325 |
-
'1f35e' => '🍞',
|
326 |
-
'1f35f' => '🍟',
|
327 |
-
'1f360' => '🍠',
|
328 |
-
'1f361' => '🍡',
|
329 |
-
'1f362' => '🍢',
|
330 |
-
'1f363' => '🍣',
|
331 |
-
'1f364' => '🍤',
|
332 |
-
'1f365' => '🍥',
|
333 |
-
'1f366' => '🍦',
|
334 |
-
'1f367' => '🍧',
|
335 |
-
'1f368' => '🍨',
|
336 |
-
'1f369' => '🍩',
|
337 |
-
'1f36a' => '🍪',
|
338 |
-
'1f36b' => '🍫',
|
339 |
-
'1f36c' => '🍬',
|
340 |
-
'1f36d' => '🍭',
|
341 |
-
'1f36e' => '🍮',
|
342 |
-
'1f36f' => '🍯',
|
343 |
-
'1f370' => '🍰',
|
344 |
-
'1f371' => '🍱',
|
345 |
-
'1f372' => '🍲',
|
346 |
-
'1f373' => '🍳',
|
347 |
-
'1f374' => '🍴',
|
348 |
-
'1f375' => '🍵',
|
349 |
-
'1f376' => '🍶',
|
350 |
-
'1f377' => '🍷',
|
351 |
-
'1f378' => '🍸',
|
352 |
-
'1f379' => '🍹',
|
353 |
-
'1f37a' => '🍺',
|
354 |
-
'1f37b' => '🍻',
|
355 |
-
'1f380' => '🎀',
|
356 |
-
'1f381' => '🎁',
|
357 |
-
'1f382' => '🎂',
|
358 |
-
'1f383' => '🎃',
|
359 |
-
'1f384' => '🎄',
|
360 |
-
'1f385' => '🎅',
|
361 |
-
'1f386' => '🎆',
|
362 |
-
'1f387' => '🎇',
|
363 |
-
'1f388' => '🎈',
|
364 |
-
'1f389' => '🎉',
|
365 |
-
'1f38a' => '🎊',
|
366 |
-
'1f38b' => '🎋',
|
367 |
-
'1f38c' => '🎌',
|
368 |
-
'1f38d' => '🎍',
|
369 |
-
'1f38e' => '🎎',
|
370 |
-
'1f38f' => '🎏',
|
371 |
-
'1f390' => '🎐',
|
372 |
-
'1f391' => '🎑',
|
373 |
-
'1f392' => '🎒',
|
374 |
-
'1f393' => '🎓',
|
375 |
-
'1f3a0' => '🎠',
|
376 |
-
'1f3a1' => '🎡',
|
377 |
-
'1f3a2' => '🎢',
|
378 |
-
'1f3a3' => '🎣',
|
379 |
-
'1f3a4' => '🎤',
|
380 |
-
'1f3a5' => '🎥',
|
381 |
-
'1f3a6' => '🎦',
|
382 |
-
'1f3a7' => '🎧',
|
383 |
-
'1f3a8' => '🎨',
|
384 |
-
'1f3a9' => '🎩',
|
385 |
-
'1f3aa' => '🎪',
|
386 |
-
'1f3ab' => '🎫',
|
387 |
-
'1f3ac' => '🎬',
|
388 |
-
'1f3ad' => '🎭',
|
389 |
-
'1f3ae' => '🎮',
|
390 |
-
'1f3af' => '🎯',
|
391 |
-
'1f3b0' => '🎰',
|
392 |
-
'1f3b1' => '🎱',
|
393 |
-
'1f3b2' => '🎲',
|
394 |
-
'1f3b3' => '🎳',
|
395 |
-
'1f3b4' => '🎴',
|
396 |
-
'1f3b5' => '🎵',
|
397 |
-
'1f3b6' => '🎶',
|
398 |
-
'1f3b7' => '🎷',
|
399 |
-
'1f3b8' => '🎸',
|
400 |
-
'1f3b9' => '🎹',
|
401 |
-
'1f3ba' => '🎺',
|
402 |
-
'1f3bb' => '🎻',
|
403 |
-
'1f3bc' => '🎼',
|
404 |
-
'1f3bd' => '🎽',
|
405 |
-
'1f3be' => '🎾',
|
406 |
-
'1f3bf' => '🎿',
|
407 |
-
'1f3c0' => '🏀',
|
408 |
-
'1f3c1' => '🏁',
|
409 |
-
'1f3c2' => '🏂',
|
410 |
-
'1f3c3' => '🏃',
|
411 |
-
'1f3c4' => '🏄',
|
412 |
-
'1f3c6' => '🏆',
|
413 |
-
'1f3c8' => '🏈',
|
414 |
-
'1f3ca' => '🏊',
|
415 |
-
'1f3e0' => '🏠',
|
416 |
-
'1f3e1' => '🏡',
|
417 |
-
'1f3e2' => '🏢',
|
418 |
-
'1f3e3' => '🏣',
|
419 |
-
'1f3e5' => '🏥',
|
420 |
-
'1f3e6' => '🏦',
|
421 |
-
'1f3e7' => '🏧',
|
422 |
-
'1f3e8' => '🏨',
|
423 |
-
'1f3e9' => '🏩',
|
424 |
-
'1f3ea' => '🏪',
|
425 |
-
'1f3eb' => '🏫',
|
426 |
-
'1f3ec' => '🏬',
|
427 |
-
'1f3ed' => '🏭',
|
428 |
-
'1f3ee' => '🏮',
|
429 |
-
'1f3ef' => '🏯',
|
430 |
-
'1f3f0' => '🏰',
|
431 |
-
'1f40c' => '🐌',
|
432 |
-
'1f40d' => '🐍',
|
433 |
-
'1f40e' => '🐎',
|
434 |
-
'1f411' => '🐑',
|
435 |
-
'1f412' => '🐒',
|
436 |
-
'1f414' => '🐔',
|
437 |
-
'1f417' => '🐗',
|
438 |
-
'1f418' => '🐘',
|
439 |
-
'1f419' => '🐙',
|
440 |
-
'1f41a' => '🐚',
|
441 |
-
'1f41b' => '🐛',
|
442 |
-
'1f41c' => '🐜',
|
443 |
-
'1f41d' => '🐝',
|
444 |
-
'1f41e' => '🐞',
|
445 |
-
'1f41f' => '🐟',
|
446 |
-
'1f420' => '🐠',
|
447 |
-
'1f421' => '🐡',
|
448 |
-
'1f422' => '🐢',
|
449 |
-
'1f423' => '🐣',
|
450 |
-
'1f424' => '🐤',
|
451 |
-
'1f425' => '🐥',
|
452 |
-
'1f426' => '🐦',
|
453 |
-
'1f427' => '🐧',
|
454 |
-
'1f428' => '🐨',
|
455 |
-
'1f429' => '🐩',
|
456 |
-
'1f42b' => '🐫',
|
457 |
-
'1f42c' => '🐬',
|
458 |
-
'1f42d' => '🐭',
|
459 |
-
'1f42e' => '🐮',
|
460 |
-
'1f42f' => '🐯',
|
461 |
-
'1f430' => '🐰',
|
462 |
-
'1f431' => '🐱',
|
463 |
-
'1f432' => '🐲',
|
464 |
-
'1f433' => '🐳',
|
465 |
-
'1f434' => '🐴',
|
466 |
-
'1f435' => '🐵',
|
467 |
-
'1f436' => '🐶',
|
468 |
-
'1f437' => '🐷',
|
469 |
-
'1f438' => '🐸',
|
470 |
-
'1f439' => '🐹',
|
471 |
-
'1f43a' => '🐺',
|
472 |
-
'1f43b' => '🐻',
|
473 |
-
'1f43c' => '🐼',
|
474 |
-
'1f43d' => '🐽',
|
475 |
-
'1f43e' => '🐾',
|
476 |
-
'1f440' => '👀',
|
477 |
-
'1f442' => '👂',
|
478 |
-
'1f443' => '👃',
|
479 |
-
'1f444' => '👄',
|
480 |
-
'1f445' => '👅',
|
481 |
-
'1f446' => '👆',
|
482 |
-
'1f447' => '👇',
|
483 |
-
'1f448' => '👈',
|
484 |
-
'1f449' => '👉',
|
485 |
-
'1f44a' => '👊',
|
486 |
-
'1f44b' => '👋',
|
487 |
-
'1f44c' => '👌',
|
488 |
-
'1f44d' => '👍',
|
489 |
-
'1f44e' => '👎',
|
490 |
-
'1f44f' => '👏',
|
491 |
-
'1f450' => '👐',
|
492 |
-
'1f451' => '👑',
|
493 |
-
'1f452' => '👒',
|
494 |
-
'1f453' => '👓',
|
495 |
-
'1f454' => '👔',
|
496 |
-
'1f455' => '👕',
|
497 |
-
'1f456' => '👖',
|
498 |
-
'1f457' => '👗',
|
499 |
-
'1f458' => '👘',
|
500 |
-
'1f459' => '👙',
|
501 |
-
'1f45a' => '👚',
|
502 |
-
'1f45b' => '👛',
|
503 |
-
'1f45c' => '👜',
|
504 |
-
'1f45d' => '👝',
|
505 |
-
'1f45e' => '👞',
|
506 |
-
'1f45f' => '👟',
|
507 |
-
'1f460' => '👠',
|
508 |
-
'1f461' => '👡',
|
509 |
-
'1f462' => '👢',
|
510 |
-
'1f463' => '👣',
|
511 |
-
'1f464' => '👤',
|
512 |
-
'1f466' => '👦',
|
513 |
-
'1f467' => '👧',
|
514 |
-
'1f468' => '👨',
|
515 |
-
'1f469' => '👩',
|
516 |
-
'1f46a' => '👪',
|
517 |
-
'1f46b' => '👫',
|
518 |
-
'1f46e' => '👮',
|
519 |
-
'1f46f' => '👯',
|
520 |
-
'1f470' => '👰',
|
521 |
-
'1f471' => '👱',
|
522 |
-
'1f472' => '👲',
|
523 |
-
'1f473' => '👳',
|
524 |
-
'1f474' => '👴',
|
525 |
-
'1f475' => '👵',
|
526 |
-
'1f476' => '👶',
|
527 |
-
'1f477' => '👷',
|
528 |
-
'1f478' => '👸',
|
529 |
-
'1f479' => '👹',
|
530 |
-
'1f47a' => '👺',
|
531 |
-
'1f47b' => '👻',
|
532 |
-
'1f47c' => '👼',
|
533 |
-
'1f47d' => '👽',
|
534 |
-
'1f47e' => '👾',
|
535 |
-
'1f47f' => '👿',
|
536 |
-
'1f480' => '💀',
|
537 |
-
'1f481' => '💁',
|
538 |
-
'1f482' => '💂',
|
539 |
-
'1f483' => '💃',
|
540 |
-
'1f484' => '💄',
|
541 |
-
'1f485' => '💅',
|
542 |
-
'1f486' => '💆',
|
543 |
-
'1f487' => '💇',
|
544 |
-
'1f488' => '💈',
|
545 |
-
'1f489' => '💉',
|
546 |
-
'1f48a' => '💊',
|
547 |
-
'1f48b' => '💋',
|
548 |
-
'1f48c' => '💌',
|
549 |
-
'1f48d' => '💍',
|
550 |
-
'1f48e' => '💎',
|
551 |
-
'1f48f' => '💏',
|
552 |
-
'1f490' => '💐',
|
553 |
-
'1f491' => '💑',
|
554 |
-
'1f492' => '💒',
|
555 |
-
'1f493' => '💓',
|
556 |
-
'1f494' => '💔',
|
557 |
-
'1f495' => '💕',
|
558 |
-
'1f496' => '💖',
|
559 |
-
'1f497' => '💗',
|
560 |
-
'1f498' => '💘',
|
561 |
-
'1f499' => '💙',
|
562 |
-
'1f49a' => '💚',
|
563 |
-
'1f49b' => '💛',
|
564 |
-
'1f49c' => '💜',
|
565 |
-
'1f49d' => '💝',
|
566 |
-
'1f49e' => '💞',
|
567 |
-
'1f49f' => '💟',
|
568 |
-
'1f4a0' => '💠',
|
569 |
-
'1f4a1' => '💡',
|
570 |
-
'1f4a2' => '💢',
|
571 |
-
'1f4a3' => '💣',
|
572 |
-
'1f4a4' => '💤',
|
573 |
-
'1f4a5' => '💥',
|
574 |
-
'1f4a6' => '💦',
|
575 |
-
'1f4a7' => '💧',
|
576 |
-
'1f4a8' => '💨',
|
577 |
-
'1f4a9' => '💩',
|
578 |
-
'1f4aa' => '💪',
|
579 |
-
'1f4ab' => '💫',
|
580 |
-
'1f4ac' => '💬',
|
581 |
-
'1f4ae' => '💮',
|
582 |
-
'1f4af' => '💯',
|
583 |
-
'1f4b0' => '💰',
|
584 |
-
'1f4b1' => '💱',
|
585 |
-
'1f4b2' => '💲',
|
586 |
-
'1f4b3' => '💳',
|
587 |
-
'1f4b4' => '💴',
|
588 |
-
'1f4b5' => '💵',
|
589 |
-
'1f4b8' => '💸',
|
590 |
-
'1f4b9' => '💹',
|
591 |
-
'1f4ba' => '💺',
|
592 |
-
'1f4bb' => '💻',
|
593 |
-
'1f4bc' => '💼',
|
594 |
-
'1f4bd' => '💽',
|
595 |
-
'1f4be' => '💾',
|
596 |
-
'1f4bf' => '💿',
|
597 |
-
'1f4c0' => '📀',
|
598 |
-
'1f4c1' => '📁',
|
599 |
-
'1f4c2' => '📂',
|
600 |
-
'1f4c3' => '📃',
|
601 |
-
'1f4c4' => '📄',
|
602 |
-
'1f4c5' => '📅',
|
603 |
-
'1f4c6' => '📆',
|
604 |
-
'1f4c7' => '📇',
|
605 |
-
'1f4c8' => '📈',
|
606 |
-
'1f4c9' => '📉',
|
607 |
-
'1f4ca' => '📊',
|
608 |
-
'1f4cb' => '📋',
|
609 |
-
'1f4cc' => '📌',
|
610 |
-
'1f4cd' => '📍',
|
611 |
-
'1f4ce' => '📎',
|
612 |
-
'1f4cf' => '📏',
|
613 |
-
'1f4d0' => '📐',
|
614 |
-
'1f4d1' => '📑',
|
615 |
-
'1f4d2' => '📒',
|
616 |
-
'1f4d3' => '📓',
|
617 |
-
'1f4d4' => '📔',
|
618 |
-
'1f4d5' => '📕',
|
619 |
-
'1f4d6' => '📖',
|
620 |
-
'1f4d7' => '📗',
|
621 |
-
'1f4d8' => '📘',
|
622 |
-
'1f4d9' => '📙',
|
623 |
-
'1f4da' => '📚',
|
624 |
-
'1f4db' => '📛',
|
625 |
-
'1f4dc' => '📜',
|
626 |
-
'1f4dd' => '📝',
|
627 |
-
'1f4de' => '📞',
|
628 |
-
'1f4df' => '📟',
|
629 |
-
'1f4e0' => '📠',
|
630 |
-
'1f4e1' => '📡',
|
631 |
-
'1f4e2' => '📢',
|
632 |
-
'1f4e3' => '📣',
|
633 |
-
'1f4e4' => '📤',
|
634 |
-
'1f4e5' => '📥',
|
635 |
-
'1f4e6' => '📦',
|
636 |
-
'1f4e7' => '📧',
|
637 |
-
'1f4e8' => '📨',
|
638 |
-
'1f4e9' => '📩',
|
639 |
-
'1f4ea' => '📪',
|
640 |
-
'1f4eb' => '📫',
|
641 |
-
'1f4ee' => '📮',
|
642 |
-
'1f4f0' => '📰',
|
643 |
-
'1f4f1' => '📱',
|
644 |
-
'1f4f2' => '📲',
|
645 |
-
'1f4f3' => '📳',
|
646 |
-
'1f4f4' => '📴',
|
647 |
-
'1f4f6' => '📶',
|
648 |
-
'1f4f7' => '📷',
|
649 |
-
'1f4f9' => '📹',
|
650 |
-
'1f4fa' => '📺',
|
651 |
-
'1f4fb' => '📻',
|
652 |
-
'1f4fc' => '📼',
|
653 |
-
'1f503' => '🔃',
|
654 |
-
'1f50a' => '🔊',
|
655 |
-
'1f50b' => '🔋',
|
656 |
-
'1f50c' => '🔌',
|
657 |
-
'1f50d' => '🔍',
|
658 |
-
'1f50e' => '🔎',
|
659 |
-
'1f50f' => '🔏',
|
660 |
-
'1f510' => '🔐',
|
661 |
-
'1f511' => '🔑',
|
662 |
-
'1f512' => '🔒',
|
663 |
-
'1f513' => '🔓',
|
664 |
-
'1f514' => '🔔',
|
665 |
-
'1f516' => '🔖',
|
666 |
-
'1f517' => '🔗',
|
667 |
-
'1f518' => '🔘',
|
668 |
-
'1f519' => '🔙',
|
669 |
-
'1f51a' => '🔚',
|
670 |
-
'1f51b' => '🔛',
|
671 |
-
'1f51c' => '🔜',
|
672 |
-
'1f51d' => '🔝',
|
673 |
-
'1f51e' => '🔞',
|
674 |
-
'1f51f' => '🔟',
|
675 |
-
'1f520' => '🔠',
|
676 |
-
'1f521' => '🔡',
|
677 |
-
'1f522' => '🔢',
|
678 |
-
'1f523' => '🔣',
|
679 |
-
'1f524' => '🔤',
|
680 |
-
'1f525' => '🔥',
|
681 |
-
'1f526' => '🔦',
|
682 |
-
'1f527' => '🔧',
|
683 |
-
'1f528' => '🔨',
|
684 |
-
'1f529' => '🔩',
|
685 |
-
'1f52a' => '🔪',
|
686 |
-
'1f52b' => '🔫',
|
687 |
-
'1f52e' => '🔮',
|
688 |
-
'1f52f' => '🔯',
|
689 |
-
'1f530' => '🔰',
|
690 |
-
'1f531' => '🔱',
|
691 |
-
'1f532' => '🔲',
|
692 |
-
'1f533' => '🔳',
|
693 |
-
'1f534' => '🔴',
|
694 |
-
'1f535' => '🔵',
|
695 |
-
'1f536' => '🔶',
|
696 |
-
'1f537' => '🔷',
|
697 |
-
'1f538' => '🔸',
|
698 |
-
'1f539' => '🔹',
|
699 |
-
'1f53a' => '🔺',
|
700 |
-
'1f53b' => '🔻',
|
701 |
-
'1f53c' => '🔼',
|
702 |
-
'1f53d' => '🔽',
|
703 |
-
'1f550' => '🕐',
|
704 |
-
'1f551' => '🕑',
|
705 |
-
'1f552' => '🕒',
|
706 |
-
'1f553' => '🕓',
|
707 |
-
'1f554' => '🕔',
|
708 |
-
'1f555' => '🕕',
|
709 |
-
'1f556' => '🕖',
|
710 |
-
'1f557' => '🕗',
|
711 |
-
'1f558' => '🕘',
|
712 |
-
'1f559' => '🕙',
|
713 |
-
'1f55a' => '🕚',
|
714 |
-
'1f55b' => '🕛',
|
715 |
-
'1f5fb' => '🗻',
|
716 |
-
'1f5fc' => '🗼',
|
717 |
-
'1f5fd' => '🗽',
|
718 |
-
'1f5fe' => '🗾',
|
719 |
-
'1f5ff' => '🗿',
|
720 |
-
'1f600' => '😀',
|
721 |
-
'1f607' => '😇',
|
722 |
-
'1f608' => '😈',
|
723 |
-
'1f60e' => '😎',
|
724 |
-
'1f610' => '😐',
|
725 |
-
'1f611' => '😑',
|
726 |
-
'1f615' => '😕',
|
727 |
-
'1f617' => '😗',
|
728 |
-
'1f619' => '😙',
|
729 |
-
'1f61b' => '😛',
|
730 |
-
'1f61f' => '😟',
|
731 |
-
'1f626' => '😦',
|
732 |
-
'1f627' => '😧',
|
733 |
-
'1f62c' => '😬',
|
734 |
-
'1f62e' => '😮',
|
735 |
-
'1f62f' => '😯',
|
736 |
-
'1f634' => '😴',
|
737 |
-
'1f636' => '😶',
|
738 |
-
'1f681' => '🚁',
|
739 |
-
'1f682' => '🚂',
|
740 |
-
'1f686' => '🚆',
|
741 |
-
'1f688' => '🚈',
|
742 |
-
'1f68a' => '🚊',
|
743 |
-
'1f68d' => '🚍',
|
744 |
-
'1f68e' => '🚎',
|
745 |
-
'1f690' => '🚐',
|
746 |
-
'1f694' => '🚔',
|
747 |
-
'1f696' => '🚖',
|
748 |
-
'1f698' => '🚘',
|
749 |
-
'1f69b' => '🚛',
|
750 |
-
'1f69c' => '🚜',
|
751 |
-
'1f69d' => '🚝',
|
752 |
-
'1f69e' => '🚞',
|
753 |
-
'1f69f' => '🚟',
|
754 |
-
'1f6a0' => '🚠',
|
755 |
-
'1f6a1' => '🚡',
|
756 |
-
'1f6a3' => '🚣',
|
757 |
-
'1f6a6' => '🚦',
|
758 |
-
'1f6ae' => '🚮',
|
759 |
-
'1f6af' => '🚯',
|
760 |
-
'1f6b0' => '🚰',
|
761 |
-
'1f6b1' => '🚱',
|
762 |
-
'1f6b3' => '🚳',
|
763 |
-
'1f6b4' => '🚴',
|
764 |
-
'1f6b5' => '🚵',
|
765 |
-
'1f6b7' => '🚷',
|
766 |
-
'1f6b8' => '🚸',
|
767 |
-
'1f6bf' => '🚿',
|
768 |
-
'1f6c1' => '🛁',
|
769 |
-
'1f6c2' => '🛂',
|
770 |
-
'1f6c3' => '🛃',
|
771 |
-
'1f6c4' => '🛄',
|
772 |
-
'1f6c5' => '🛅',
|
773 |
-
'1f30d' => '🌍',
|
774 |
-
'1f30e' => '🌎',
|
775 |
-
'1f310' => '🌐',
|
776 |
-
'1f312' => '🌒',
|
777 |
-
'1f316' => '🌖',
|
778 |
-
'1f317' => '🌗',
|
779 |
-
'1f318' => '🌘',
|
780 |
-
'1f31a' => '🌚',
|
781 |
-
'1f31c' => '🌜',
|
782 |
-
'1f31d' => '🌝',
|
783 |
-
'1f31e' => '🌞',
|
784 |
-
'1f332' => '🌲',
|
785 |
-
'1f333' => '🌳',
|
786 |
-
'1f34b' => '🍋',
|
787 |
-
'1f350' => '🍐',
|
788 |
-
'1f37c' => '🍼',
|
789 |
-
'1f3c7' => '🏇',
|
790 |
-
'1f3c9' => '🏉',
|
791 |
-
'1f3e4' => '🏤',
|
792 |
-
'1f400' => '🐀',
|
793 |
-
'1f401' => '🐁',
|
794 |
-
'1f402' => '🐂',
|
795 |
-
'1f403' => '🐃',
|
796 |
-
'1f404' => '🐄',
|
797 |
-
'1f405' => '🐅',
|
798 |
-
'1f406' => '🐆',
|
799 |
-
'1f407' => '🐇',
|
800 |
-
'1f408' => '🐈',
|
801 |
-
'1f409' => '🐉',
|
802 |
-
'1f40a' => '🐊',
|
803 |
-
'1f40b' => '🐋',
|
804 |
-
'1f40f' => '🐏',
|
805 |
-
'1f410' => '🐐',
|
806 |
-
'1f413' => '🐓',
|
807 |
-
'1f415' => '🐕',
|
808 |
-
'1f416' => '🐖',
|
809 |
-
'1f42a' => '🐪',
|
810 |
-
'1f465' => '👥',
|
811 |
-
'1f46c' => '👬',
|
812 |
-
'1f46d' => '👭',
|
813 |
-
'1f4ad' => '💭',
|
814 |
-
'1f4b6' => '💶',
|
815 |
-
'1f4b7' => '💷',
|
816 |
-
'1f4ec' => '📬',
|
817 |
-
'1f4ed' => '📭',
|
818 |
-
'1f4ef' => '📯',
|
819 |
-
'1f4f5' => '📵',
|
820 |
-
'1f500' => '🔀',
|
821 |
-
'1f501' => '🔁',
|
822 |
-
'1f502' => '🔂',
|
823 |
-
'1f504' => '🔄',
|
824 |
-
'1f505' => '🔅',
|
825 |
-
'1f506' => '🔆',
|
826 |
-
'1f507' => '🔇',
|
827 |
-
'1f509' => '🔉',
|
828 |
-
'1f515' => '🔕',
|
829 |
-
'1f52c' => '🔬',
|
830 |
-
'1f52d' => '🔭',
|
831 |
-
'1f55c' => '🕜',
|
832 |
-
'1f55d' => '🕝',
|
833 |
-
'1f55e' => '🕞',
|
834 |
-
'1f55f' => '🕟',
|
835 |
-
'1f560' => '🕠',
|
836 |
-
'1f561' => '🕡',
|
837 |
-
'1f562' => '🕢',
|
838 |
-
'1f563' => '🕣',
|
839 |
-
'1f564' => '🕤',
|
840 |
-
'1f565' => '🕥',
|
841 |
-
'1f566' => '🕦',
|
842 |
-
'1f567' => '🕧',
|
843 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
latest-tweets.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Latest Tweets Widget
|
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/latest-tweets-widget/
|
5 |
Description: Provides a sidebar widget showing latest tweets - compatible with the new Twitter API 1.1
|
6 |
Author: Tim Whitlock
|
7 |
-
Version: 1.1.
|
8 |
Author URI: http://timwhitlock.info/
|
9 |
*/
|
10 |
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/latest-tweets-widget/
|
5 |
Description: Provides a sidebar widget showing latest tweets - compatible with the new Twitter API 1.1
|
6 |
Author: Tim Whitlock
|
7 |
+
Version: 1.1.2
|
8 |
Author URI: http://timwhitlock.info/
|
9 |
*/
|
10 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://timwhitlock.info/donate-to-a-project/
|
|
4 |
Tags: twitter, tweets, oauth, api, rest, api, widget, sidebar
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 3.9
|
7 |
-
Stable tag: 1.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -75,7 +75,7 @@ Do so at your own risk.
|
|
75 |
|
76 |
= Does this plugin show Emoji images in tweets? =
|
77 |
|
78 |
-
Yes, as of version 1.1.
|
79 |
|
80 |
|
81 |
== Screenshots ==
|
@@ -85,8 +85,11 @@ Yes, as of version 1.1.1 Emojis are rendered the same as on twitter.com. See the
|
|
85 |
|
86 |
== Changelog ==
|
87 |
|
|
|
|
|
|
|
88 |
= 1.1.1 =
|
89 |
-
*
|
90 |
|
91 |
= 1.1.0 =
|
92 |
* Handling of truncated retweets
|
@@ -160,7 +163,7 @@ Yes, as of version 1.1.1 Emojis are rendered the same as on twitter.com. See the
|
|
160 |
|
161 |
== Upgrade Notice ==
|
162 |
|
163 |
-
= 1.1.
|
164 |
* Now supports Emoji rendering.
|
165 |
|
166 |
|
@@ -273,7 +276,7 @@ If you want to disable Emoji image replacement, you can filter the replacement c
|
|
273 |
return '';
|
274 |
} );
|
275 |
|
276 |
-
or to strip Emoji characters from all tweets, return your own replacement function that returns something else, e.g:
|
277 |
|
278 |
add_filter('latest_tweets_emoji_callback', function( $func ){
|
279 |
return function( array $match ){
|
4 |
Tags: twitter, tweets, oauth, api, rest, api, widget, sidebar
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 3.9
|
7 |
+
Stable tag: 1.1.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
75 |
|
76 |
= Does this plugin show Emoji images in tweets? =
|
77 |
|
78 |
+
Yes, as of version 1.1.2 Emojis are rendered the same as on twitter.com. See the [Other Notes](http://wordpress.org/plugins/latest-tweets-widget/other_notes/) section for how to disable Emoji.
|
79 |
|
80 |
|
81 |
== Screenshots ==
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
+
= 1.1.2 =
|
89 |
+
* Added Emoji image rendering
|
90 |
+
|
91 |
= 1.1.1 =
|
92 |
+
* broken release, don't use.
|
93 |
|
94 |
= 1.1.0 =
|
95 |
* Handling of truncated retweets
|
163 |
|
164 |
== Upgrade Notice ==
|
165 |
|
166 |
+
= 1.1.2 =
|
167 |
* Now supports Emoji rendering.
|
168 |
|
169 |
|
276 |
return '';
|
277 |
} );
|
278 |
|
279 |
+
- or to strip Emoji characters from all tweets, return your own replacement function that returns something else, e.g:
|
280 |
|
281 |
add_filter('latest_tweets_emoji_callback', function( $func ){
|
282 |
return function( array $match ){
|