奇怪的问题与preg_replace和汉字 [英] Weird problem with preg_replace and chinese character

查看:143
本文介绍了奇怪的问题与preg_replace和汉字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个werid问题。在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\\\\\
\\\rr \\\ n)+ /','\r\\\
\r\\\
',preg_replace('/ ^(\\\r\\\\\
)+ | (\\\r\\\\\
)+ $ /','',preg_replace('/ \s + /','',preg_replace('/ ^ \s + | \s + $ /','',$ a))));
}

显示器为

 好不好你
好​​不好

任何想法?

解决方案

'u'模式(例如'/(\\\r\\\\\\\\r\\\\\
)+ / u'
而不是'/(\\\r\\\\\
\\\r\\\\\
)+ /'
)并确保主题是UTF-8。



只有这种方式,您的输入才会被解释为UTF-8,而不是单字节编码。 / p>

i have this werid problem. After a preg_replace, some chinese character became funky character. this is the script.

$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))));
}

The display would be

好不好你
好不好�

Any ideas?

解决方案

Add the 'u' modifier to your patterns (e.g. '/(\\\r\\\n\\\r\\\n)+/u' instead of '/(\\\r\\\n\\\r\\\n)+/') and make sure the subject is in UTF-8.

Only this way will your input be interpreted as UTF-8 instead of a single-byte encoding.

这篇关于奇怪的问题与preg_replace和汉字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆