У меня есть эта проблема. После 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)))); }
Дисплей будет
好不好你好不好
Есть идеи?
Добавьте модификатор 'u'
к вашим шаблонам (например, '/(\\\r\\\n\\\r\\\n)+/u'
вместо '/(\\\r\\\n\\\r\\\n)+/'
) и убедитесь, что объект находится в UTF-8.
Только таким образом ваш ввод будет интерпретироваться как UTF-8 вместо однобайтовой кодировки.
Используйте \p{Z}
вместо \s
в вашем регулярном выражении
Символы Unicode занимают несколько байтов, тогда как символы ASCII занимают один. Вероятно, вам нужно сделать многобайтовый поиск mb_ereg_replace
http://us2.php.net/manual/en/function.mb-ereg-replace.php