regex — лишить тебя всего, кроме ascii и emoji

Я хотел бы очистить строку, оставив только символы ASCII НО Кроме того, я хотел бы сохранить смайлики!

В настоящее время у нас есть тупой подход белого списка:


preg_replace('/[^(\x20-\x7F,☠,♥)]*/','', $text);

Есть ли способ пропустить большую группу смайликов через фильтр?

В настоящее время наша конфигурация php не имеет mbstring значения установлены. например мы не иметь mbstring.internal_encoding = UTF-8, Не уверен, если это имеет значение или нет.

0

Решение

Первый, (, ,, ) не имеют особого значения в классе символов, и если вы используете квантификатор *, ваш шаблон будет успешным в каждой позиции в строке (с пустым соответствием).

Если вы хотите сохранить эмодзи, вам нужно всего лишь поместить их в класс отрицанных персонажей. Очевидно, вместо того, чтобы помещать их один за другим в класс символов, используйте диапазоны, например так:

/[^\x20-\x7F��-��☠♥]+/u

Вы можете выбрать интересующие вас диапазоны здесь: https://en.wikipedia.org/wiki/Emoji

Обратите внимание, что поскольку вы имеете дело с символами Юникода, вы должны использовать модификатор u.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector