正则是个好东西 正则不光可以对英语字符 特殊字符进行提取 对于中文字符 日语字符等等都可以提取 再也不要用(.*?)来匹配了 而且 也不准确!
放在例子先:取出下面字符中的所有中文字符:
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们a呜呜呜we这y里w安安生生et一ef直在努力gr着找寻啊啊最佳gr的伙伴,希望您的$$%×××可以@推动他们GH团队高速发展!"; $code = "/[".chr(0xa1)."-".chr(0xff)."]+/"; preg_match_all($code,$str, $arr); //GB2312汉字字母数字下划线正则表达式 print_r($arr);
取出结果如下:
需要注意的这个是GBK的
下面再给出一个utf8的案例:
if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', '×××')){ echo '全是汉字'; }else{ echo '不全是汉字'; } // 打印出 "全是汉字" if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', '中国 china')){ echo '全是汉字'; }else{ echo '不全是汉字'; } //打印出"不全是汉字",
然后 再在网上找到这么一段代码 大家可以看看:
<?php header('Content-type: text/html; charset=UTF-8'); $forasp="forasp.cn网站制作学习网www.forasp.cn正则获取中文php获取中文"; $cn = "/(cn|php)([x{4e00}-\x{9fa5}]*)/u"; preg_match_all($cn,$forasp,$return); var_dump($return); ?> array(3) { [0]=> array(3) { [0]=> string(23) "cn网站制作学习网" [1]=> string(20) "cn正则获取中文" [2]=> string(15) "php获取中文" } [1]=> array(3) { [0]=> string(2) "cn" [1]=> string(2) "cn" [2]=> string(3) "php" } [2]=> array(3) { [0]=> string(21) "网站制作学习网hidden_content$" [1]=> string(18) "正则获取中文" [2]=> string(12) "获取中文" } }