我想在这个正则表达式中允许欧元符号€但它不会通过
$val = ereg_replace($regex, "[^a-zA-Z0-9[:space:][:blank:]€+-]+", $_REQUEST[$var]);
答案 0 :(得分:5)
你有mbstring instaled吗?如果是,请尝试使用函数mb_ereg_replace()。它会支持这个特性(即使是在UTF-8中)。
编辑:同时检查mbregex是否打开。有些主机打开mbstring但禁用了mbregex(我不知道为什么)。
答案 1 :(得分:1)
检查文本编辑器/ IDE使用的字符集是否为 iso-8859-15 (如果这是您尝试显示的原因)。
如果它是 UTF-8 ,你将不得不另外替换它(€
在几个字节上表示,我猜它不适合[...]
1}}正则表达式块。)
顺便说一句,ereg_replace()
已被弃用,转而使用preg_replace()
。
另外,为什么你有两个“正则表达式”参数? (我想$regex
也包含正则表达式?)
建议(未经测试),如果您想要做的是删除初始正则表达式中的€+其他字符:
$val = preg_replace(
array('/[^a-zA-Z0-9[:space:][:blank:]+\-]+/', '/€/'),
'',
$_REQUEST[$var]
);
答案 2 :(得分:1)
在你的评论中,你忘记了preg_replace所需的分隔符:
$string = 'ab!:;c+12,.3 €def-x/';
$string = preg_replace('/[^a-zA-Z0-9\s€+-]+/', '', $string);
echo $string,"\n";
<强>输出:强>
abc+123 €def-x