2012-02-28 130 views
4

我想允许在这个正则表达式的欧元符号€,但它不会来通过欧元符号

$val = ereg_replace($regex, "[^a-zA-Z0-9[:space:][:blank:]€+-]+", $_REQUEST[$var]); 
+1

额日格不支持Unicode本身,我认为。使用preg_replace的时间,ereg_ *从74年冬天开始就不推荐使用。 – Evert 2012-02-28 11:29:38

+0

足够公平的我在做什么错在这里$ val = preg_replace([^ a-zA-Z0-9 [:space:] [:blank:]€+ - ] +“,”“,$ _REQUEST [$ var]) ; – user1209203 2012-02-28 11:37:46

+0

“缺少”preg_replace之后(也是分隔符/ as @ M42回答如上 – Phius 2012-02-28 14:58:37

回答

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 
1

检查你的文本编辑器/ IDE使用的字符集是ISO-8859-15 (如果这是你试图显示的原因)。

如果是UTF-8,你将不得不做另一个替换尤其是它(被几个字节表示,我想,它不适合为[...]正则表达式块)。

顺便说一句,ereg_replace()已弃用,由preg_replace()赞成。

另外,为什么你有两个“正则表达式”参数? (我想,$regex包含一个正则表达式吗?)

建议(未经测试),如果你想要做的是在你最初的正则表达式删除其他€+字符:

$val = preg_replace(
    array('/[^a-zA-Z0-9[:space:][:blank:]+\-]+/', '/€/'), 
    '', 
    $_REQUEST[$var] 
); 
+0

preg需要以相同的分隔符开始和结束 – Evert 2012-02-28 12:32:40

+0

Eww,谢谢,修正 – 2012-02-28 12:34:18

+0

这会替换欧元符号''' – Toto 2012-02-28 13:07:43

5

你有MBSTRING instaled?如果是这样,请尝试使用功能mb_ereg_replace()。它会支持这个caracter(即使在UTF-8中)。

编辑:同时检查mbregex是否打开。有些主机打开mbstring,但禁用了mbregex(我不知道为什么)。

+0

不错,我学到了东西,谢谢:) – 2012-02-28 11:34:26

+0

似乎没有在 – user1209203 2012-02-28 11:49:51

+0

尝试一些选项来为你提供建议,只是修复错误在你的正则表达式中为我工作(使用preg_replace)。 – Phius 2012-02-28 21:00:58