Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_替换和汉字的奇怪问题_Php_Regex_Character Encoding - Fatal编程技术网

Php 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

我有这个问题。在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('/(\\\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解决了它!
好不好你
好不好�