$string=$string  = "aa='bb'; xxxx='s汉=字js\'ls\'f;f'; xxx=940; df3243_3495='sdk'";
整个都是字串的内容
or
"aa='bb'; xxxx='s汉=字js\'ls\'f;f'; xxx=940; df3243_3495='sdk'";
才是?

解决方案 »

  1.   

    试试这个先:
    <?php
    $string  = "aa=\"bb\"; xxxx='slf汉字js\'lhds\'ffffff';xxx='94543530'; df3243_3495='sdkfsdljflsdjfsdlddd'";
    $len     = strlen($string);
    if ($string[$len-1]!=';') {  //如果字符串最后没有分号,加入分号.
    $string .= ';';
    }$pattern = '/((\=(?:(\'|\")|([0-9]))){1}|((?:(\'|\")|([0-9]))\;)){1}\s*/U';
    $res     = preg_split($pattern, $string);$count  = count($res);
    $result = array();
    for ($i=0; $i<$count-1; $i+=2) {  //组合成数组.
    $result[trim($res[$i])] = "'".$res[$i+1]."'";
    }
    print'<pre>';
    print_r($result);
    print'<pre>';
    ?>—————————————————————————————————
    *************** MANYOU(漫游者) ***************
      

  2.   

    对不起写错了aa='bb'; xxxx='s汉=字js\'ls\'f;f';xxx=940; df3243_3495='sdk'是这个字符串的内容.
      

  3.   

    回manyou(漫游者):这种方法不行'xx'=>940取不出来!!!—————————————————————————————————
    *************** MANYOU(漫游者) ***************
      

  4.   

    最后面还有一个分号吧$str="aa='bb'; xxxx='s?=字js\'ls\'f;f';xxx=940; df3243_3495='sdk';";
    preg_match_all("/(\w*='.*';)/U",$str,$arr);
    foreach($arr[1] as $v){
    $tmp=strpos($v,"=");
    $r[substr($v,0,$tmp)]=substr($v,$tmp+1);
    }
    echo "<xmp>";
    print_r($r);
      

  5.   

    刚才没考虑xx=940,xx=null等$str="aa='bb'; xxxx='s?=字js\'ls\'f;f';xxx=940; df3243_3495='sdk';";
    preg_match_all("/(\w*=('.*'||\d+||null);)/iU",$str,$arr);
    foreach($arr[1] as $v){
    $tmp=strpos($v,"=");
    $r[substr($v,0,$tmp)]=substr($v,$tmp+1);
    }
    echo "<xmp>";
    print_r($r);
      

  6.   

    忘了去掉最后的分号,改:
    $r[substr($v,0,$tmp)]=substr($v,$tmp+1,-1);