Php preg_替换和汉字的奇怪问题
我有这个问题。在preg_替换之后,一些汉字变成了时髦的汉字。这是剧本Php preg_替换和汉字的奇怪问题,php,regex,character-encoding,Php,Regex,Character Encoding,我有这个问题。在preg_替换之后,一些汉字变成了时髦的汉字。这是剧本 $message = strip_tags(mysql_real_escape_string($_POST['message']),'<img><vid>'); echo $message; $message = removewhitespace($message); echo $message; function removewhitespace($a) { return preg_replace
$message = strip_tags(mysql_real_escape_string($_POST['message']),'<img><vid>');
echo $message;
$message = removewhitespace($message);
echo $message;
function removewhitespace($a)
{
return preg_replace('/(\\\r\\\n\\\r\\\n)+/','\r\n\r\n', preg_replace('/^(\\\r\\\n)+|(\\\r\\\n)+$/', '', preg_replace('/\s+/', ' ', preg_replace('/^\s+|\s+$/', '', $a))));
}
有什么想法吗?Unicode字符占用多个字节,而ASCII字符占用一个字节。您可能需要执行多字节搜索mb\u ereg\u replace在正则表达式中使用\p{Z}而不是\s在模式中添加'u'修饰符,例如,'/\\\r\\\\\n\\\\\r\\\\\n+/u'而不是'/\\\r\\\\n\\\\\r\\\n+/',并确保主题在UTF-8中
只有这样,您的输入才会被解释为UTF-8而不是单字节编码。仍然是相对有效的,最后的u解决了它!
好不好你
好不好�