Emoji
February 3, 2026 ยท View on GitHub
Emoji()
Validates if the input is an emoji or a sequence of emojis.
v::emoji()->assert('๐');
// Validation passes successfully
v::emoji()->assert('๐');
// Validation passes successfully
v::emoji()->assert('โก');
// Validation passes successfully
v::emoji()->assert('๐๐๐๐๐๐๐๐๐๐๐ด');
// Validation passes successfully
v::emoji()->assert('๐ง๐ท'); // (Country flags)
// Validation passes successfully
v::emoji()->assert('๐จโ๐ฉโ๐งโ๐ฆ'); // (ZWJ sequence)
// Validation passes successfully
v::emoji()->assert('๐ฉ๐ฝ'); // (Skin tone modifier)
// Validation passes successfully
v::emoji()->assert('1๏ธโฃ'); // (Keycap sequence)
// Validation passes successfully
v::emoji()->assert('Hello World');
// โ "Hello World" must be an emoji
v::emoji()->assert('this is a spark โก'); // (Mixed content)
// โ "this is a spark โก" must be an emoji
This validator supports:
- Basic emojis and pictographs
- Skin tone modifiers (Fitzpatrick scale)
- Country flags (regional indicator sequences)
- Subdivision flags (tag sequences like ๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ)
- Keycap sequences (0๏ธโฃ-9๏ธโฃ, #๏ธโฃ, *๏ธโฃ)
- ZWJ (Zero Width Joiner) sequences for families, professions, and combined emojis
- Emojis up to Unicode 17.0 / Emoji 16.0
Templates
Emoji::TEMPLATE_STANDARD
| Mode | Template |
|---|---|
default | {{subject}} must be an emoji |
inverted | {{subject}} must not be an emoji |
Template placeholders
| Placeholder | Description |
|---|---|
subject | The validated input or the custom validator name (if specified). |
Categorization
- Strings
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Renamed to Emoji, changed the behavior, and added support for more emojis |
| 2.0.0 | Created as NotEmoji |