1
$string = 'ab!:;c+12,.3 €def-x/';
$string = preg_replace('/[^a-zA-Z0-9\s€+-]+/', '', $string);
$val=htmlentities($string, ENT_NOQUOTES, );
echo $string,"\n";

回声

abc+123 �def-x

并不是

abc+123 €def-x

我需要通过正则表达式获取欧元符号并进入数据库,而不是作为欧元符号。

4

2 回答 2

1

尝试:

$string = 'ab!:;c+12,.3 €def-x/';
$string = preg_replace('/[^a-zA-Z0-9\s€+-]+/u', '', $string);
$val=htmlentities($string, ENT_NOQUOTES, 'UTF-8');
echo $string,"\n";

应该修复它。

于 2012-04-15T13:41:54.863 回答
1

您需要u为正则表达式提供修饰符,否则它不处理 Unicode 字符:

preg_replace('/.../u', ...)

如果这样做,请确保源代码和文本以 UTF-8 编码。

于 2012-04-15T13:42:27.243 回答