PHP ereg_replace中的欧元符号

时间:2012-02-28 11:16:08

标签: php regex

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

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

3 个答案:

答案 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