2016-11-30 5 views

ответ

1

\p{Sc} соответствует шаблону символов валюты, нужно просто поместить его в класс инвертированного характера (или выражения в квадратных скобках в терминологии POSIX).

Использование

$re = '/(*UTF)[^[:print:]\p{Sc}]+/'; 
echo preg_replace($re, '', '£aA€'); 

См regex demo и PHP demo.

Детали:

  • (*UTF) - это PCRE глагол, который делает PCRE двигатель обработать строку в виде строки Unicode, а не байт строки (обратите внимание, что мы не можем использовать /u модификатор, поскольку он позволяет как (*UTF) и (*UCP) глаголы, последний делает все подшаблоны Unicode осведомленными и [^[:print:]] начинает сопоставлять намного больше символов тогда)
  • [^[:print:]\p{Sc}]+ - соответствует любому 1 или более символам (из-за квантора +), кроме:
    • [:print:] - версия для печати символы
    • \p{Sc} - валютные символы
+0

Я хочу, чтобы символы валюты Я думаю, что удаляет их? – user3131345

+0

что не то, что вы сказали в своем вопросе – Fallenhero

+0

@ user3131345: Означает ли это, что вам нужно только 'preg_replace ('/ [^ [: print:]] + /', '', $ str)'? –