$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
我需要通过正则表达式获取欧元符号并进入数据库,而不是作为欧元符号。
$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
我需要通过正则表达式获取欧元符号并进入数据库,而不是作为欧元符号。
尝试:
$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";
应该修复它。
您需要u
为正则表达式提供修饰符,否则它不处理 Unicode 字符:
preg_replace('/.../u', ...)
如果这样做,请确保源代码和文本以 UTF-8 编码。