PHP中如何过滤掉非汉字字符?
只留下简体和繁体汉字,其他的字符全部过滤掉。yayqi的无法过滤掉中文的标点符号啊?jlake的可以,但是只适合UTF-8编码的,如果是GB2312呢?...
只留下简体和繁体汉字,其他的字符全部过滤掉。
yayqi的无法过滤掉中文的标点符号啊?
jlake的可以,但是只适合UTF-8编码的,如果是GB2312呢? 展开
yayqi的无法过滤掉中文的标点符号啊?
jlake的可以,但是只适合UTF-8编码的,如果是GB2312呢? 展开
3个回答
展开全部
首先需要先把带有中文的字符串进行编码转化,由GB2312编码转化为UTF-8编码。
这样是为了PHP正则表达式可以正确的去匹配
然后通过preg_match_all()函数以及相应的中文匹配正则表达式,把所有的中文匹配出来
最后,把匹配到的中文字符串再转为B2312编码,这样做是为了可以在网页编码为GB2312上正确显示。
例如:
<?php
$str = "ddddvvv(,中文.)dfdsfds字符啊.";
//把GB2312编码转化为 UTF-8编码
$str = mb_convert_encoding($str, 'UTF-8', 'GB2312');
//正则匹配
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str, $matches);
//把匹配到的数组连接为字符串
$str = implode('', $matches[0]);
//把UTF-8编码转化为 GB2312编码
$str = mb_convert_encoding($str, 'GB2312', 'UTF-8');
echo $str;
//输出 中文字符啊
?>
这样是为了PHP正则表达式可以正确的去匹配
然后通过preg_match_all()函数以及相应的中文匹配正则表达式,把所有的中文匹配出来
最后,把匹配到的中文字符串再转为B2312编码,这样做是为了可以在网页编码为GB2312上正确显示。
例如:
<?php
$str = "ddddvvv(,中文.)dfdsfds字符啊.";
//把GB2312编码转化为 UTF-8编码
$str = mb_convert_encoding($str, 'UTF-8', 'GB2312');
//正则匹配
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str, $matches);
//把匹配到的数组连接为字符串
$str = implode('', $matches[0]);
//把UTF-8编码转化为 GB2312编码
$str = mb_convert_encoding($str, 'GB2312', 'UTF-8');
echo $str;
//输出 中文字符啊
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?php
$str = "a 1b 2b<中文>。xxyy字符";
//转换 GB2312 -> UTF-8
$str = mb_convert_encoding($str, 'UTF-8', 'GB2312');
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str, $matches);
$str = join('', $matches[0]);
//转换 UTF-8 -> GB2312
$str = mb_convert_encoding($str, 'GB2312', 'UTF-8');
echo $str; //输出 中文字符
?>
$str = "a 1b 2b<中文>。xxyy字符";
//转换 GB2312 -> UTF-8
$str = mb_convert_encoding($str, 'UTF-8', 'GB2312');
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str, $matches);
$str = join('', $matches[0]);
//转换 UTF-8 -> GB2312
$str = mb_convert_encoding($str, 'GB2312', 'UTF-8');
echo $str; //输出 中文字符
?>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可用正则表达式:
<?php
$str="abcde我只要汉字abcde";
echo eregi_replace("[^\x80-\xff]","",$str);
?>
//输出“我只要汉字”
<?php
$str="abcde我只要汉字abcde";
echo eregi_replace("[^\x80-\xff]","",$str);
?>
//输出“我只要汉字”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询