PHP中如何过滤掉非汉字字符?
发布网友
发布时间:2022-04-06 02:17
我来回答
共4个回答
懂视网
时间:2022-04-06 06:38
php去除标点符号的方法:首先创建一个PHP示例文件;然后通过正则表达式“preg_replace($pattern, ' ', $str);”删除字符串中的中英文标点符号即可。
推荐:《PHP视频教程》
php正则,删除字符串中的中英文标点符号
原理很简单,正则查找字符串,然后替换
英文标点符号,正则中有专用的模式来匹配。中文则需要一一列举
代码:
<?php
$str = "!@#$%^&*(中'文:;﹑?中'文中'文().,<>|[]'"";
//中文标点
$char = "。、!?:;﹑?"…‘’“”〝〞∕?‖— 〈〉﹞﹝「」??〖〗】【??』『〕〔》《﹐?﹕︰﹔!???﹖﹌﹏﹋'?ˊˋ―﹫︳︴?_ ̄﹢﹦﹤‐??﹟﹩﹠﹪﹡﹨﹍﹉﹎﹊ˇ︵︶︷︸︹︿﹀︺︽︾ˉ﹁﹂﹃﹄︻︼()";
$pattern = array(
"/[[:punct:]]/i", //英文标点符号
'/['.$char.']/u', //中文标点符号
'/[ ]{2,}/'
);
$str = preg_replace($pattern, ' ', $str);
echo $str;
热心网友
时间:2022-04-06 03:46
首先需要先把带有中文的字符串进行编码转化,由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;
//输出 中文字符啊
?>
热心网友
时间:2022-04-06 05:04
<?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; //输出 中文字符
?>
热心网友
时间:2022-04-06 06:39
可用正则表达式:
<?php
$str="abcde我只要汉字abcde";
echo eregi_replace("[^\x80-\xff]","",$str);
?>
//输出“我只要汉字”