Я пытаюсь удалить все недопустимые символы из строки с помощью регулярных выражений. Вот мой текущий код 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/ это показывает, что эмодзи не совпадают, но когда я запускаю код, он распечатывается. Какие-либо предложения?
Ваш шаблон неверен. Если вы хотите убрать всех персонажей, которые не в приведенном списке вы должны использовать класс отрицательных символов: [^...]
, Также в настоящее время [
а также ]
используются в качестве разделителей, что означает, что шаблон не рассматривается как класс символов.
Шаблон должен быть:
$pattern = "~[^a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+.,:?=-]~";
Теперь это должно убрать эмодзи и напечатать ваше сообщение.
Других решений пока нет …