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