收录日期:2018/08/15 02:06:28 时间:2016/05/22 09:12:34 标签:基础编程
怎么让程序判断一段文本中的中文字符和英文字符
譬如下面这句:

全球化的趋势在China蔓延。


这句话怎么按照字符(中文字符,英文字符)一个一个的循环取出来?

谢谢
http://www.zmcn.com/bbs/html/5_191.htm
Rem 汉字判断
function isChinese(para)
       on error resume next
       dim str
       dim i
       if isNUll(para) then 
          isChinese=false
          exit function
       end if
       str=cstr(para)
       if trim(str)="" then
          isChinese=false
          exit function
       end if
       for i=1 to len(str)
     c=asc(mid(str,i,1))
             if c>=0 then 
    isChinese=false 
              exit function
           end if
       next
       isChinese=true
       if err.number<>0 then err.clear
   end function
%>

如:
if not isChinese(request("name")) then
 errmsg=errmsg+"
"+"<li>用户名应为汉字"
 founderr=true
else
 username=trim(request("name"))
end if


这样更简单
 for(i=0;i<realname.length;i++){
  char=realname.charCodeAt(i);  
  if(!(char>255)){  
   alert("真实姓名应为汉字!");
   userform.realname.focus();
   return false;
   }

<input type=text name=txt>
<input type=button value=ok onclick="cc()">
<script language=javascript>
function cc()
{
var j = 0;
var s = document.all.txt.value;
if (s=="")return;
if (/[^x00-xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");
for (var i=0; i<s.length; i++)
{
if (s.charCodeAt(i) > 255) j = j + 2;
else j++
}
alert("字符数:"+j);
}
</script>
<?php
$s = "全球化的趋势在China蔓延。";
preg_match_all("/[\x80-\xff]?./",$s,$regs);
print_r($regs);
?>
楼上的能给简单讲解一下嘛?
好象就是取ASCII码大于127就是吧!
很简单,用正则表达式/[\x80-\xff]?./去匹配字符,结果在数组$regs中
按中文编码标准,一个汉字由两个字节组成,其中首字符的值>128即16进制80

由于中文的ASCII码是有一定的范围的。所以你可以用下面的正则表达式来表示中文。

/^[chr(0xa1)-chr(0xff)]+$/

下面是一个使用的例子:
$str = "我爱你:php";
if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str) {
  echo "这是一个纯中文字符串";
} else {
  echo "这不是一个纯中文字串";

结帖吧~!
繁体有区别吗?
BIG码汉字是0xA440-0xF97E、0xA4A1-0xF9FE吧?
以前我用一个切字符串的改处理简体就处理不了繁体改处理繁体就处理不了简体

如何同时对繁简体进行检测?
道理一样的,分ASCII代码段
/[\x80-\xff]?./
可以匹配任何字符,其中
[\x80-\xff]匹配扩展ascii码部分,.匹配任意字符
任何宽字符都由一个“扩展ascii码”字符和一个“任意字符”组成,只是这个“任意字符”是受限的