regex — Регулярные выражения для диапазона точек Unicode. Переполнение стека.

Я пытаюсь удалить все символы из строки из строки, кроме:

  • Буквенно-цифровые символы
  • Знак доллара ($)
  • Нижнее подчеркивание (_)
  • Юникод символы между точками кода U+0080 а также U+FFFF

Я получил первые три условия, выполнив это:

preg_replace('/[^a-zA-Z\d$_]+/', '', $foo);

Как мне соответствовать четвертому условию? Я смотрел на использование \X но должен быть лучший способ, чем перечислять более 65000 символов.

13

Решение

Ты можешь использовать:

$foo = preg_replace('/[^\w$\x{0080}-\x{FFFF}]+/u', '', $foo);
  • \w — эквивалентно [a-zA-Z0-9_]
  • \x{0080}-\x{FFFF} сопоставлять символы между кодами U+0080andU + FFFF`
  • /u для поддержки юникода в регулярных выражениях
25

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

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

По вопросам рекламы [email protected]