已经基本解决,用的是xml_parse
但是效率很低,不知道谁有更好的办法

解决方案 »

  1.   

    $s="name='test' value1='testvar' value2=44";
    $a = array();
    preg_replace('/([a-z0-9]+)=[\']{0,1}([a-z0-9]+)[\']{0,1}/ie',
    '$a[\'\1\'] = \'\\2\'', $s);
    print_r($a);
      

  2.   

    function string_to_array( $str )
    {
    $tmp = explode( " ", $str );
    $arr = array();
    foreach( $tmp as $v )
    {
    $tmp2  = explode( "=", $v );
    $arr[$tmp2[0]] = $tmp2[1];
    }
    return $arr;
    }$s="name='test' value1='testvar' value2=44";print_r( string_to_array( $s ) );
      

  3.   

    没关系,只要这些东西在''之内,正则都可以匹配,而且有很多模式,我也记不大清楚,应该是可以不用匹配子串的,测试:
    $s = "name1='name=value1' name2='value12值'";
    $a = array();
    preg_replace('/(.+?)=[\']{0,1}([^\']+)[\']{0,1}/e',
    '\$a[\'$1\'] = \'$2\'', $s);
    print_r($a);输出:
    Array ( [name1] => name=value1 [ name2] => value12值 )