Удалить мусорные символы в UTF

Я использую формат utf8 для хранения всех моих данных в MySQL. Прежде чем данные будут вставлены в базу данных, мне нужно очистить строки с помощью нежелательных символов. Строки в формате utf8. Я знаю, как использовать регулярные выражения и замену строк, но не знаю, как работать с арабскими символами.

Пример строки, которую необходимо очистить: "████ .. الــقــوانين الجديـــدة في قســـم الـعنايـ";

Благодарю вас

1 ответ

Решение

Хорошо. Как уже сказал Jonathan Leffler, если вы можете указать диапазоны символов Юникода для символов, которые необходимо заменить, вы можете использовать регулярное выражение для замены символов пустой строкой.

Символ Юникода указан как \x{FFFF} в выражении (в PHP). Кроме того, вы должны установить u модификатор, чтобы PHP обрабатывал шаблон как UTF8.

Итак, в конце концов, у вас есть что-то вроде этого:

preg_replace('/[\x{FFFF}-\x{FFFF}]+/u','',$string);

где

  • /.../u являются разделителями плюс модификатор
  • [...]+ класс символов плюс квантификатор, что означает совпадение с любым из этих символов внутри одного или более раз
  • \x{FFFF}-\x{FFFF} это диапазон символов Юникода (очевидно, вы должны предоставить правильные кодовые точки / номера символов).

Вы также можете отменить группу с ^ Вы можете указать диапазон, который хотите сохранить:

preg_replace('/[^\x{FFFF}-\x{FFFF}]+/u','',$string);

Дополнительная информация:

Другие вопросы по тегам