Я пытаюсь удалить все символы из строки из строки, кроме:
$
)_
)U+0080
а также U+FFFF
Я получил первые три условия, выполнив это:
preg_replace('/[^a-zA-Z\d$_]+/', '', $foo);
Как мне соответствовать четвертому условию? Я смотрел на использование \X
но должен быть лучший способ, чем перечислять более 65000 символов.
Ты можешь использовать:
$foo = preg_replace('/[^\w$\x{0080}-\x{FFFF}]+/u', '', $foo);
\w
— эквивалентно [a-zA-Z0-9_]
\x{0080}-\x{FFFF}
сопоставлять символы между кодами U
+0080and
U + FFFF`/u
для поддержки юникода в регулярных выраженияхДругих решений пока нет …