$str="a@@@b  ; c";
$arr=preg_split("/[^abc]+/",$str);
print_r($arr);

解决方案 »

  1.   

    <?php
    $str="a@@@b  ; c";
    preg_match_all('|[a-z]|i', $str, $array);
    print_r($array);
    ?>
    output:
    Array
    (
        [0] => Array
            (
                [0] => a
                [1] => b
                [2] => c
            ))
      

  2.   

    $str="a@@@b !!!!g ; c \$d222@@@@@@@#####%%%%啊";
    测试一下这个字符串
    谢谢
      

  3.   

    <?php
    $str="a@@@b !!!!g ; c \$d222@@@@@@@#####%%%%啊";
    $arr=preg_split("/[^".chr(0xa1)."-".chr(0xff)."a-zA-Z0-9]+/",$str);//只匹配中英文数字
    print_r($arr);
    ?>
      

  4.   

    已经解决。如果不这样替换,中间会分割多一些空的字符串元素
    private function SplitSpecialChar($string)
    {
    $strWithSpace=preg_replace("/[\x20-\2f]+|[\x3a-\x40]+|[\x5b-\x60]+|[\x7b-\x7e]+/"," ",$string);
    return preg_split("/[\x20]+/",$strWithSpace);
    }
      

  5.   

    改回这个好一点/[\x21-\/]+|[\:-\@]+|[\x5b-\x60]+|[\{-\~]+|\s/