我想允许在这个正则表达式的欧元符号€,但它不会来通过欧元符号
$val = ereg_replace($regex, "[^a-zA-Z0-9[:space:][:blank:]€+-]+", $_REQUEST[$var]);
我想允许在这个正则表达式的欧元符号€,但它不会来通过欧元符号
$val = ereg_replace($regex, "[^a-zA-Z0-9[:space:][:blank:]€+-]+", $_REQUEST[$var]);
您的评论,你忘了用的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
检查你的文本编辑器/ IDE使用的字符集是ISO-8859-15 (如果这是你试图显示的原因)。
如果是UTF-8,你将不得不做另一个替换尤其是它(€
被几个字节表示,我想,它不适合为[...]
正则表达式块)。
顺便说一句,ereg_replace()
已弃用,由preg_replace()
赞成。
另外,为什么你有两个“正则表达式”参数? (我想,$regex
包含一个正则表达式吗?)
建议(未经测试),如果你想要做的是在你最初的正则表达式删除其他€+字符:
$val = preg_replace(
array('/[^a-zA-Z0-9[:space:][:blank:]+\-]+/', '/€/'),
'',
$_REQUEST[$var]
);
你有MBSTRING instaled?如果是这样,请尝试使用功能mb_ereg_replace()。它会支持这个caracter(即使在UTF-8中)。
编辑:同时检查mbregex是否打开。有些主机打开mbstring,但禁用了mbregex(我不知道为什么)。
不错,我学到了东西,谢谢:) – 2012-02-28 11:34:26
似乎没有在 – user1209203 2012-02-28 11:49:51
尝试一些选项来为你提供建议,只是修复错误在你的正则表达式中为我工作(使用preg_replace)。 – Phius 2012-02-28 21:00:58
额日格不支持Unicode本身,我认为。使用preg_replace的时间,ereg_ *从74年冬天开始就不推荐使用。 – Evert 2012-02-28 11:29:38
足够公平的我在做什么错在这里$ val = preg_replace([^ a-zA-Z0-9 [:space:] [:blank:]€+ - ] +“,”“,$ _REQUEST [$ var]) ; – user1209203 2012-02-28 11:37:46
“缺少”preg_replace之后(也是分隔符/ as @ M42回答如上 – Phius 2012-02-28 14:58:37