PHP Regex Strip Amo Все эмодзи

Я пытаюсь удалить все недопустимые символы из строки с помощью регулярных выражений. Вот мой текущий код PHP

$input = "��";

$pattern = "[a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+\-.,:?=]";
$message = preg_replace($pattern,"",$input);

if (empty($message)) {
echo "The string is empty";
}
else {
echo $message;
}

Emoji распечатывается, когда я запускаю это, когда я хочу, чтобы он распечатал «Строка пуста».

Когда я помещаю свой код регулярного выражения в http://regexr.com/ это показывает, что эмодзи не совпадают, но когда я запускаю код, он распечатывается. Какие-либо предложения?

3

Решение

Ваш шаблон неверен. Если вы хотите убрать всех персонажей, которые не в приведенном списке вы должны использовать класс отрицательных символов: [^...], Также в настоящее время [ а также ] используются в качестве разделителей, что означает, что шаблон не рассматривается как класс символов.

Шаблон должен быть:

$pattern = "~[^a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+.,:?=-]~";

Теперь это должно убрать эмодзи и напечатать ваше сообщение.

3

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

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

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