diff --git a/README.md b/README.md index 673ec98..47ad102 100644 --- a/README.md +++ b/README.md @@ -619,6 +619,13 @@ $value = \TraderInteractive\Filter\Strings::explode('abc,def,ghi'); assert($value === ['abc', 'def', 'ghi']); ``` +#### Strings::stripEmoji +Aliased in the filterer as `strip-emoji`, this filter removes emoji characters from a given string optionally replacing them with the given replacement string +```php +$value = \TraderInteractive\Filter\Strings::stripEmoji('this is ridiculousπŸ™„', '!'); +assert($value === 'this is ridiculous!'); +``` + #### Strings::stripTags Aliased in the filterer as `strip-tags`, this filter is essentially a wrapper around the built-in [`strip_tags`](http://php.net/manual/en/function.strip-tags.php) function. However, unlike the native function the stripTags method will return null when given a null value. diff --git a/composer.json b/composer.json index 0a68314..d029fb9 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,7 @@ "traderinteractive/filter-dates": "^4.0", "traderinteractive/filter-floats": "^4.0", "traderinteractive/filter-ints": "^4.0", - "traderinteractive/filter-strings": "^4.1" + "traderinteractive/filter-strings": "^4.2" }, "require-dev": { "phpunit/phpunit": "^9.0", diff --git a/src/Filterer.php b/src/Filterer.php index 19a14f8..e9ded47 100644 --- a/src/Filterer.php +++ b/src/Filterer.php @@ -9,6 +9,7 @@ use TraderInteractive\Filter\Arrays; use TraderInteractive\Filter\Json; use TraderInteractive\Filter\PhoneFilter; +use TraderInteractive\Filter\Strings; use TraderInteractive\Filter\TimeOfDayFilter; use TraderInteractive\Filter\UuidFilter; use TraderInteractive\Filter\XmlFilter; @@ -49,6 +50,7 @@ final class Filterer implements FiltererInterface 'phone' => PhoneFilter::class . '::filter', 'redact' => '\\TraderInteractive\\Filter\\Strings::redact', 'string' => '\\TraderInteractive\\Filter\\Strings::filter', + 'strip-emoji' => Strings::class . '::stripEmoji', 'strip-tags' => '\\TraderInteractive\\Filter\\Strings::stripTags', 'time-of-day' => TimeOfDayFilter::class . '::filter', 'timezone' => '\\TraderInteractive\\Filter\\DateTimeZone::filter', diff --git a/tests/FiltererTest.php b/tests/FiltererTest.php index e6b1d88..07280a2 100644 --- a/tests/FiltererTest.php +++ b/tests/FiltererTest.php @@ -566,6 +566,25 @@ function (int $input, int $fieldOneValue) : int { [], ], ], + 'strip-emoji' => [ + 'spec' => [ + 'field' => [['strip-emoji']], + ], + 'input' => [ + 'field' => 'This πŸ’© text contains 😞 multiple emoji πŸ” characters 🍚. As well as an alphanumeric ' + . 'supplement πŸ†— and flag 🚩', + ], + 'options' => [], + 'result' => [ + true, + [ + 'field' => 'This text contains multiple emoji characters . As well as an alphanumeric ' + . 'supplement and flag ', + ], + null, + [], + ], + ], ]; }