我想匹配不可打印的字符加上货币符号以下匹配不可打印,如何添加货币符号的期望?
$str = preg_replace('/[[:^print:]]/', '', $str);
答案 0 :(得分: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}
- 货币符号