如字符串$a="中国[]"我想判断这个字符串含有特殊字符,但是用ereg输出的是0,我把除了英文字母,数字和中文外的所有字符都是特殊字符 
请问如何处理,请写出整句代码,拜托.

解决方案 »

  1.   

    中文使用ASCII码进行验证,楼主可以试一下,本人已试过很多次,刚刚写的代码,是可以的:采用PERL兼容的正则表达式:<?php
    $chinese=chr(0xa1)."-".chr(0xff);//中文匹配
    $pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
    if(preg_match($zimu,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
    {
    echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
    }
    else
    {
    echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
    }楼主试一下。
      

  2.   

    1楼的朋友,你的发上来的代码是完整的吗,感觉有点不对,自已做了一点修改,发现还字符串有中文时显示“是特殊字符”代码如下:
    <?php
    $chinese=chr(0xa1)."-".chr(0xff);//中文匹配
    $pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
    if(preg_match($pattern,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
    {
    echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
    }
    else
    {
    echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
    }
    ?>
    2楼的朋友,我的编码环境是utf-8
      

  3.   

    楼主在这里使用preg_match时正则颠倒了,使用的pattern应该为匹配特殊符号的pattern,而不是匹配正常字符的pattern
    所以思路是错误的
      

  4.   


    <?php
    $a="中国[]";
    $regx = '/[^0-9a-zA-Z一-龥]/u';
    $result = preg_match($regx,$a);
    if($result){
    //存在特殊字符
    }
    ?>