<?php
$str = '正则如何匹配中文字在某中文字符串中?';
preg_match("/中/",$str,$regs);
print_r($regs);
?>
输出
Array
(
    [0] => 中
)

解决方案 »

  1.   

    $str="中国嘎";
    eregi("中",$str,$mobile);
    print_r($mobile);
      

  2.   

    感谢两位在问一个问题,如何区分一个字符串中的哪些是中文、哪些是英文?例如:$str = '这里是中文 this is English';
      

  3.   

    这个问题好像不是那么简单,对某些中文,如果匹配后加亮的话,会出现乱码。
    如下面:
    <?php
    $str = '谓曰:“君有康济才,终不徒然。”便以子孙为托。及贵,追赠长司空,擢其子宁用之。神武自队主转为函使。尝乘驿过建兴,云雾昼晦,雷声随之,半日乃绝,若有神应者。每行道路,往来无风尘之色。又尝梦履众星而行,觉而内喜。';
    $key="牛";
    $test=preg_replace("/".$key."/","<font color='red'>".$key."</font>",$str);
    echo $test;
    ?>
    请高手一并将此问题解决了吧!
      

  4.   

    绕道而行
    将不在\0-\128之间的不能用\w识别的字符,替换成\w可以识别的字符,
    然后\W就可以匹配中文了
    ^_^
      

  5.   

    对楼主补充问题的解答
    <?php
    $str = '这里是中文 this is English';
    //把中文变成红色
    echo preg_replace("/([\x80-\xff].)/","<font color=red>\\1</font>",$str);
    //把非中文变成红色
    echo preg_replace("/([\x20-\x7f])/","<font color=red>\\1</font>",$str);
    ?>对gowuliao(吴辽) 问题的解答
    $test=mb_ereg_replace($key,"<font color='red'>".$key."</font>",$str);
    echo $test;
    php对宽字符处理的不太好,但有一个补救的办法——连接mbstring扩展库
      

  6.   

    呵呵,gowuliao(吴辽)的问题也是一直困扰我的问题了
    经常在标记搜索结果的时候会出问题。
      

  7.   

    很感谢 xuzuning(唠叨)的解答!