mirror of
https://github.com/Respect/Validation.git
synced 2024-06-04 14:52:17 +02:00
Make the ranges of emoji more accurate
The new ranges are now 100% accurate by not including any Unicode point that is not defined into the reference file. For example, in the old ranges there is this interval: [\x{3297}-\x{3299}] That is not accurate because there is no "3298" Unicode point in the specs. It may be used by another character and it will cause the check to fail if the user included that particular character. The new ranges for that previous example are now: \x{3297} \x{3299} And so on... This commit will make the ranges more accurate with maximum tolerance to other charcters and also rename the constant name from "GROUPS" to "RANGES" since they are ranges, not groups.
This commit is contained in:
parent
ce0d658340
commit
a8cb87217f
|
@ -189,7 +189,6 @@
|
|||
- [Cpf](rules/Cpf.md)
|
||||
- [Domain](rules/Domain.md)
|
||||
- [Email](rules/Email.md)
|
||||
- [Emoji](rules/Emoji.md)
|
||||
- [HexRgbColor](rules/HexRgbColor.md)
|
||||
- [Imei](rules/Imei.md)
|
||||
- [Ip](rules/Ip.md)
|
||||
|
@ -200,6 +199,7 @@
|
|||
- [NfeAccessKey](rules/NfeAccessKey.md)
|
||||
- [Nif](rules/Nif.md)
|
||||
- [NotBlank](rules/NotBlank.md)
|
||||
- [NotEmoji](rules/NotEmoji.md)
|
||||
- [NotOptional](rules/NotOptional.md)
|
||||
- [Pesel](rules/Pesel.md)
|
||||
- [Phone](rules/Phone.md)
|
||||
|
@ -312,6 +312,7 @@
|
|||
- [NoneOf](rules/NoneOf.md)
|
||||
- [Not](rules/Not.md)
|
||||
- [NotBlank](rules/NotBlank.md)
|
||||
- [NotEmoji](rules/NotEmoji.md)
|
||||
- [NotEmpty](rules/NotEmpty.md)
|
||||
- [NotOptional](rules/NotOptional.md)
|
||||
- [NullType](rules/NullType.md)
|
||||
|
|
|
@ -24,133 +24,176 @@ use function preg_match;
|
|||
*/
|
||||
final class NotEmoji extends AbstractRule
|
||||
{
|
||||
private const GROUPS = [
|
||||
'[\x{1F385}-\x{1F9E6}]',
|
||||
'[\x{1F331}-\x{1F9A2}]',
|
||||
'[\x{1F32D}-\x{1F9C2}]',
|
||||
'[\x{1F300}-\x{1F9F3}]',
|
||||
'[\x{1F004}-\x{1F9FF}]',
|
||||
'[\x{1F399}-\x{1F9FE}]',
|
||||
'[\x{1F170}-\x{1F6D0}]',
|
||||
'[\x{1F38C}-\x{1F6A9}]',
|
||||
'[\x{261D}]',
|
||||
'[\x{2620}]',
|
||||
'[\x{2639}-\x{263A}]',
|
||||
'[\x{26D1}]',
|
||||
'[\x{26F7}-\x{26F9}]',
|
||||
'[\x{270A}-\x{270D}]',
|
||||
'[\x{2763}-\x{2764}]',
|
||||
'[\x{2618}]',
|
||||
'[\x{2615}]',
|
||||
'[\x{231A}-\x{231B}]',
|
||||
'[\x{23F0}-\x{23F3}]',
|
||||
'[\x{2600}-\x{2604}]',
|
||||
'[\x{2614}]',
|
||||
'[\x{2668}]',
|
||||
'[\x{2693}]',
|
||||
'[\x{26A1}]',
|
||||
'[\x{26C4}-\x{26C5}]',
|
||||
'[\x{26C8}]',
|
||||
'[\x{26E9}-\x{26EA}]',
|
||||
'[\x{26F0}-\x{26F5}]',
|
||||
'[\x{26FA}]',
|
||||
'[\x{26FD}]',
|
||||
'[\x{2708}]',
|
||||
'[\x{2744}]',
|
||||
'[\x{2B50}]',
|
||||
'[\x{265F}-\x{2660}]',
|
||||
'[\x{2663}-\x{2666}]',
|
||||
'[\x{26BD}-\x{26BE}]',
|
||||
'[\x{26F3}]',
|
||||
'[\x{26F8}]',
|
||||
'[\x{2728}]',
|
||||
'[\x{2328}]',
|
||||
'[\x{260E}]',
|
||||
'[\x{2692}-\x{2699}]',
|
||||
'[\x{26B0}-\x{26B1}]',
|
||||
'[\x{26CF}]',
|
||||
'[\x{26D3}]',
|
||||
'[\x{2702}]',
|
||||
'[\x{2709}]',
|
||||
'[\x{270F}]',
|
||||
'[\x{2712}]',
|
||||
'[\x{00A9}]',
|
||||
'[\x{00AE}]',
|
||||
'[\x{203C}]',
|
||||
'[\x{2049}]',
|
||||
'[\x{2122}]',
|
||||
'[\x{2139}]',
|
||||
private const RANGES = [
|
||||
'\x{0023}\x{FE0F}\x{20E3}',
|
||||
'\x{0023}\x{20E3}',
|
||||
'\x{002A}\x{FE0F}\x{20E3}',
|
||||
'\x{002A}\x{20E3}',
|
||||
'\x{0030}\x{FE0F}\x{20E3}',
|
||||
'\x{0030}\x{20E3}',
|
||||
'\x{0031}\x{FE0F}\x{20E3}',
|
||||
'\x{0031}\x{20E3}',
|
||||
'\x{0032}\x{FE0F}\x{20E3}',
|
||||
'\x{0032}\x{20E3}',
|
||||
'\x{0033}\x{FE0F}\x{20E3}',
|
||||
'\x{0033}\x{20E3}',
|
||||
'\x{0034}\x{FE0F}\x{20E3}',
|
||||
'\x{0034}\x{20E3}',
|
||||
'\x{0035}\x{FE0F}\x{20E3}',
|
||||
'\x{0035}\x{20E3}',
|
||||
'\x{0036}\x{FE0F}\x{20E3}',
|
||||
'\x{0036}\x{20E3}',
|
||||
'\x{0037}\x{FE0F}\x{20E3}',
|
||||
'\x{0037}\x{20E3}',
|
||||
'\x{0038}\x{FE0F}\x{20E3}',
|
||||
'\x{0038}\x{20E3}',
|
||||
'\x{0039}\x{FE0F}\x{20E3}',
|
||||
'\x{0039}\x{20E3}',
|
||||
'\x{1F004}',
|
||||
'\x{1F0CF}',
|
||||
'[\x{1F170}-\x{1F171}]',
|
||||
'[\x{1F17E}-\x{1F17F}]',
|
||||
'\x{1F18E}',
|
||||
'[\x{1F191}-\x{1F19A}]',
|
||||
'[\x{1F1E6}-\x{1F1FF}]',
|
||||
'[\x{1F201}-\x{1F202}]',
|
||||
'\x{1F21A}',
|
||||
'\x{1F22F}',
|
||||
'[\x{1F232}-\x{1F23A}]',
|
||||
'[\x{1F250}-\x{1F251}]',
|
||||
'[\x{1F300}-\x{1F321}]',
|
||||
'[\x{1F324}-\x{1F393}]',
|
||||
'[\x{1F396}-\x{1F397}]',
|
||||
'[\x{1F399}-\x{1F39B}]',
|
||||
'[\x{1F39E}-\x{1F3F0}]',
|
||||
'[\x{1F3F3}-\x{1F3F5}]',
|
||||
'[\x{1F3F7}-\x{1F4FD}]',
|
||||
'[\x{1F4FF}-\x{1F53D}]',
|
||||
'[\x{1F549}-\x{1F54E}]',
|
||||
'[\x{1F550}-\x{1F567}]',
|
||||
'[\x{1F56F}-\x{1F570}]',
|
||||
'[\x{1F573}-\x{1F57A}]',
|
||||
'\x{1F587}',
|
||||
'[\x{1F58A}-\x{1F58D}]',
|
||||
'\x{1F590}',
|
||||
'[\x{1F595}-\x{1F596}]',
|
||||
'[\x{1F5A4}-\x{1F5A5}]',
|
||||
'\x{1F5A8}',
|
||||
'[\x{1F5B1}-\x{1F5B2}]',
|
||||
'\x{1F5BC}',
|
||||
'[\x{1F5C2}-\x{1F5C4}]',
|
||||
'[\x{1F5D1}-\x{1F5D3}]',
|
||||
'[\x{1F5DC}-\x{1F5DE}]',
|
||||
'\x{1F5E1}',
|
||||
'\x{1F5E3}',
|
||||
'\x{1F5E8}',
|
||||
'\x{1F5EF}',
|
||||
'\x{1F5F3}',
|
||||
'[\x{1F5FA}-\x{1F64F}]',
|
||||
'[\x{1F680}-\x{1F6C5}]',
|
||||
'[\x{1F6CB}-\x{1F6D2}]',
|
||||
'[\x{1F6E0}-\x{1F6E5}]',
|
||||
'\x{1F6E9}',
|
||||
'[\x{1F6EB}-\x{1F6EC}]',
|
||||
'\x{1F6F0}',
|
||||
'[\x{1F6F3}-\x{1F6F9}]',
|
||||
'[\x{1F910}-\x{1F93A}]',
|
||||
'[\x{1F93C}-\x{1F93E}]',
|
||||
'[\x{1F940}-\x{1F945}]',
|
||||
'[\x{1F947}-\x{1F970}]',
|
||||
'[\x{1F973}-\x{1F976}]',
|
||||
'\x{1F97A}',
|
||||
'[\x{1F97C}-\x{1F9A2}]',
|
||||
'[\x{1F9B0}-\x{1F9B9}]',
|
||||
'[\x{1F9C0}-\x{1F9C2}]',
|
||||
'[\x{1F9D0}-\x{1F9FF}]',
|
||||
'\x{00A9}',
|
||||
'\x{00AE}',
|
||||
'\x{203C}',
|
||||
'\x{2049}',
|
||||
'\x{2122}',
|
||||
'\x{2139}',
|
||||
'[\x{2194}-\x{2199}]',
|
||||
'[\x{21A9}-\x{21AA}]',
|
||||
'[\x{23CF}]',
|
||||
'[\x{23EA}-\x{23EF}]',
|
||||
'[\x{231A}-\x{231B}]',
|
||||
'\x{2328}',
|
||||
'\x{23CF}',
|
||||
'[\x{23E9}-\x{23F3}]',
|
||||
'[\x{23F8}-\x{23FA}]',
|
||||
'[\x{24C2}]',
|
||||
'\x{24C2}',
|
||||
'[\x{25AA}-\x{25AB}]',
|
||||
'[\x{25B6}]',
|
||||
'[\x{25C0}]',
|
||||
'\x{25B6}',
|
||||
'\x{25C0}',
|
||||
'[\x{25FB}-\x{25FE}]',
|
||||
'[\x{2611}]',
|
||||
'[\x{2600}-\x{2604}]',
|
||||
'\x{260E}',
|
||||
'\x{2611}',
|
||||
'[\x{2614}-\x{2615}]',
|
||||
'\x{2618}',
|
||||
'\x{261D}',
|
||||
'\x{2620}',
|
||||
'[\x{2622}-\x{2623}]',
|
||||
'[\x{2626}]',
|
||||
'[\x{262A}]',
|
||||
'\x{2626}',
|
||||
'\x{262A}',
|
||||
'[\x{262E}-\x{262F}]',
|
||||
'[\x{2638}]',
|
||||
'[\x{2640}-\x{2642}]',
|
||||
'[\x{2638}-\x{263A}]',
|
||||
'\x{2640}',
|
||||
'\x{2642}',
|
||||
'[\x{2648}-\x{2653}]',
|
||||
'[\x{267B}]',
|
||||
'[\x{265F}-\x{2660}]',
|
||||
'\x{2663}',
|
||||
'[\x{2665}-\x{2666}]',
|
||||
'\x{2668}',
|
||||
'\x{267B}',
|
||||
'[\x{267E}-\x{267F}]',
|
||||
'[\x{2695}]',
|
||||
'[\x{23E9}]',
|
||||
'[\x{2692}-\x{2697}]',
|
||||
'\x{2699}',
|
||||
'[\x{269B}-\x{269C}]',
|
||||
'[\x{26A0}]',
|
||||
'[\x{26A0}-\x{26A1}]',
|
||||
'[\x{26AA}-\x{26AB}]',
|
||||
'[\x{26CE}]',
|
||||
'[\x{26D4}]',
|
||||
'[\x{2705}]',
|
||||
'[\x{2714}-\x{2716}]',
|
||||
'[\x{271D}]',
|
||||
'[\x{2721}]',
|
||||
'[\x{26B0}-\x{26B1}]',
|
||||
'[\x{26BD}-\x{26BE}]',
|
||||
'[\x{26C4}-\x{26C5}]',
|
||||
'\x{26C8}',
|
||||
'[\x{26CE}-\x{26CF}]',
|
||||
'\x{26D1}',
|
||||
'[\x{26D3}-\x{26D4}]',
|
||||
'\x{26EA}',
|
||||
'[\x{26F0}-\x{26F5}]',
|
||||
'[\x{26F7}-\x{26FA}]',
|
||||
'\x{26FD}',
|
||||
'\x{2702}',
|
||||
'\x{2705}',
|
||||
'[\x{2708}-\x{270D}]',
|
||||
'\x{270F}',
|
||||
'\x{2712}',
|
||||
'\x{2714}',
|
||||
'\x{2716}',
|
||||
'\x{271D}',
|
||||
'\x{2721}',
|
||||
'\x{2728}',
|
||||
'[\x{2733}-\x{2734}]',
|
||||
'[\x{2747}]',
|
||||
'[\x{274C}-\x{274E}]',
|
||||
'[\x{2753}-\x{2757}]',
|
||||
'\x{2744}',
|
||||
'\x{2747}',
|
||||
'\x{26E9}',
|
||||
'\x{274C}',
|
||||
'\x{274E}',
|
||||
'[\x{2753}-\x{2755}]',
|
||||
'\x{2757}',
|
||||
'[\x{2763}-\x{2764}]',
|
||||
'[\x{2795}-\x{2797}]',
|
||||
'[\x{27A1}]',
|
||||
'[\x{27B0}]',
|
||||
'[\x{27BF}]',
|
||||
'\x{27A1}',
|
||||
'\x{27B0}',
|
||||
'\x{27BF}',
|
||||
'[\x{2934}-\x{2935}]',
|
||||
'[\x{2B05}-\x{2B07}]',
|
||||
'[\x{2B1B}-\x{2B1C}]',
|
||||
'[\x{2B55}]',
|
||||
'[\x{3030}]',
|
||||
'[\x{303D}]',
|
||||
'[\x{3297}-\x{3299}]',
|
||||
'[\x{1F1E6}-\x{1F1FF}]',
|
||||
'\x{0023}\x{20E3}',
|
||||
'\x{0023}\x{FE0F}\x{20E3}',
|
||||
'\x{002A}\x{20E3}',
|
||||
'\x{002A}\x{FE0F}\x{20E3}',
|
||||
'\x{0030}\x{20E3}',
|
||||
'\x{0030}\x{FE0F}\x{20E3}',
|
||||
'\x{0031}\x{20E3}',
|
||||
'\x{0031}\x{FE0F}\x{20E3}',
|
||||
'\x{0032}\x{20E3}',
|
||||
'\x{0032}\x{FE0F}\x{20E3}',
|
||||
'\x{0033}\x{20E3}',
|
||||
'\x{0033}\x{FE0F}\x{20E3}',
|
||||
'\x{0034}\x{20E3}',
|
||||
'\x{0034}\x{FE0F}\x{20E3}',
|
||||
'\x{0035}\x{20E3}',
|
||||
'\x{0035}\x{FE0F}\x{20E3}',
|
||||
'\x{0036}\x{20E3}',
|
||||
'\x{0036}\x{FE0F}\x{20E3}',
|
||||
'\x{0037}\x{20E3}',
|
||||
'\x{0037}\x{FE0F}\x{20E3}',
|
||||
'\x{0038}\x{20E3}',
|
||||
'\x{0038}\x{FE0F}\x{20E3}',
|
||||
'\x{0039}\x{20E3}',
|
||||
'\x{0039}\x{FE0F}\x{20E3}',
|
||||
'\x{2B50}',
|
||||
'\x{2B55}',
|
||||
'\x{3030}',
|
||||
'\x{303D}',
|
||||
'\x{3297}',
|
||||
'\x{3299}',
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -162,6 +205,6 @@ final class NotEmoji extends AbstractRule
|
|||
return false;
|
||||
}
|
||||
|
||||
return preg_match('/'.implode('|', self::GROUPS).'/mu', $input) === 0;
|
||||
return preg_match('/'.implode('|', self::RANGES).'/mu', $input) === 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue