我有一段文本,如下$a = "PROPERTY[DOMAINCHECK][0]=210 Domain name available PROPERTY[DOMAINCHECK][1]=210 Domain name available PROPERTY[DOMAINCHECK][2]=210 Domain name available PROPERTY[DOMAINCHECK][3]=210 Domain name available PROPERTY[DOMAINCHECK][4]=211 Domain name not available PROPERTY[DOMAINCHECK][5]=210 Domain name available PROPERTY[DOMAINCHECK][6]=210 Domain name available PROPERTY[DOMAINCHECK][7]=210 Domain name available PROPERTY[DOMAINCHECK][8]=210 Domain name available PROPERTY[DOMAINCHECK][9]=210 Available PROPERTY[DOMAINCHECK][10]=210 Available PROPERTY[DOMAINCHECK][11]=210 Domain name available PROPERTY[DOMAINCHECK][12]= PROPERTY[DOMAINCHECK][13]=210 Domain name available PROPERTY[DOMAINCHECK][14]=210 Domain name available PROPERTY[DOMAINCHECK][15]=210 Domain name available PROPERTY[DOMAINCHECK][16]=210 Domain name available PROPERTY[DOMAINCHECK][17]=210 Available PROPERTY[DOMAINCHECK][18]=210 Domain name available PROPERTY[DOMAINCHECK][19]=210 Available PROPERTY[DOMAINCHECK][20]=210 Domain name available PROPERTY[DOMAINCHECK][21]=210 Domain name available PROPERTY[DOMAINCHECK][22]=210 Available PROPERTY[DOMAINCHECK][23]=210 Domain name available PROPERTY[DOMAINCHECK][24]= PROPERTY[DOMAINCHECK][25]=210 Domain name available PROPERTY[DOMAINCHECK][26]=210 Available PROPERTY[DOMAINCHECK][27]=210 Domain name available PROPERTY[DOMAINCHECK][28]=210 Available PROPERTY[DOMAINCHECK][29]=210 Available PROPERTY[DOMAINCHECK][30]=210 Domain name available PROPERTY[DOMAINCHECK][31]=210 Available PROPERTY[DOMAINCHECK][32]=210 Available PROPERTY[DOMAINCHECK][33]=210 Available PROPERTY[DOMAINCHECK][34]=210 Domain name available PROPERTY[DOMAINCHECK][35]=210 Available PROPERTY[DOMAINCHECK][36]=210 Domain name available PROPERTY[DOMAINCHECK][37]=210 Domain name available PROPERTY[DOMAINCHECK][38]=210 Available PROPERTY[DOMAINCHECK][39]=210 Domain name available PROPERTY[DOMAINCHECK][40]=210 Domain name available PROPERTY[DOMAINCHECK][41]=210 Available PROPERTY[DOMAINCHECK][42]=210 Domain name available PROPERTY[DOMAINCHECK][43]=210 Domain name available PROPERTY[DOMAINCHECK][44]=210 Domain name available PROPERTY[DOMAINCHECK][45]=210 Available PROPERTY[DOMAINCHECK][46]=210 Domain name available PROPERTY[DOMAINCHECK][47]=210 Domain name available PROPERTY[DOMAINCHECK][48]=210 Domain name available; temporary no connection to registry, please proceed to register. We will process your order once connection is up. PROPERTY[DOMAINCHECK][49]=210 Domain name available PROPERTY[DOMAINCHECK][50]=210 Available PROPERTY[DOMAINCHECK][51]=210 Available PROPERTY[DOMAINCHECK][52]=210 Available PROPERTY[DOMAINCHECK][53]=210 Domain name available PROPERTY[DOMAINCHECK][54]=210 Domain name available PROPERTY[DOMAINCHECK][55]=210 Available PROPERTY[DOMAINCHECK][56]=210 Domain name available PROPERTY[DOMAINCHECK][57]=210 Domain name available PROPERTY[DOMAINCHECK][58]=210 Domain name available PROPERTY[DOMAINCHECK][59]=210 Domain name available PROPERTY[DOMAINCHECK][60]=210 Domain name available PROPERTY[DOMAINCHECK][61]=210 Available PROPERTY[DOMAINCHECK][62]=421 SERVICE OFFLINE PROPERTY[DOMAINCHECK][63]=210 Domain name available PROPERTY[DOMAINCHECK][64]=210 Available PROPERTY[DOMAINCHECK][65]=210 Available PROPERTY[DOMAINCHECK][66]=210 Available PROPERTY[DOMAINCHECK][67]=210 Domain name available PROPERTY[DOMAINCHECK][68]=210 Domain name available PROPERTY[DOMAINCHECK][69]=210 Domain name available PROPERTY[DOMAINCHECK][70]=210 Domain name available PROPERTY[DOMAINCHECK][71]=210 Domain name available PROPERTY[DOMAINCHECK][72]=210 Available PROPERTY[DOMAINCHECK][73]=210 Available";我需要取出文本中PROPERTY[DOMAINCHECK]=后面的三数字值,取出来放在$arr[1]数组中
PHP代码:
preg_match_all("/PROPERTY\[DOMAINCHECK\]\[\d+\].*?=(\d+)/is",$a,$arr);
var_dump($arr[1]);运行代码显示:
array(72) { [0]=> string(3) "210" [1]=> string(3) "210" [2]=> string(3) "210" [3]=> string(3) "210" [4]=> string(3) "211" [5]=> string(3) "210" [6]=> string(3) "210" [7]=> string(3) "210" [8]=> string(3) "210" [9]=> string(3) "210" [10]=> string(3) "210" [11]=> string(3) "210" [12]=> string(3) "210" [13]=> string(3) "210" [14]=> string(3) "210" [15]=> string(3) "210" [16]=> string(3) "210" [17]=> string(3) "210" [18]=> string(3) "210" [19]=> string(3) "210" [20]=> string(3) "210" [21]=> string(3) "210" [22]=> string(3) "210" [23]=> string(3) "210" [24]=> string(3) "210" [25]=> string(3) "210" [26]=> string(3) "210" [27]=> string(3) "210" [28]=> string(3) "210" [29]=> string(3) "210" [30]=> string(3) "210" [31]=> string(3) "210" [32]=> string(3) "210" [33]=> string(3) "210" [34]=> string(3) "210" [35]=> string(3) "210" [36]=> string(3) "210" [37]=> string(3) "210" [38]=> string(3) "210" [39]=> string(3) "210" [40]=> string(3) "210" [41]=> string(3) "210" [42]=> string(3) "210" [43]=> string(3) "210" [44]=> string(3) "210" [45]=> string(3) "210" [46]=> string(3) "210" [47]=> string(3) "210" [48]=> string(3) "210" [49]=> string(3) "210" [50]=> string(3) "210" [51]=> string(3) "210" [52]=> string(3) "210" [53]=> string(3) "210" [54]=> string(3) "210" [55]=> string(3) "210" [56]=> string(3) "210" [57]=> string(3) "210" [58]=> string(3) "210" [59]=> string(3) "210" [60]=> string(3) "421" [61]=> string(3) "210" [62]=> string(3) "210" [63]=> string(3) "210" [64]=> string(3) "210" [65]=> string(3) "210" [66]=> string(3) "210" [67]=> string(3) "210" [68]=> string(3) "210" [69]=> string(3) "210" [70]=> string(3) "210" [71]=> string(3) "210" } 
本来一共有74条记录,正则后,$arr[1]数组的元素应该显示74个才对,实际显示只有72个,不知道为什么,最后两个不见了。于是,我将最后两个的文本单独截取出来,用同样的正则,取出文本中PROPERTY[DOMAINCHECK]=后面的三数字值,取出来放在$arr1[1]数组中PHP代码:
$b = "Domain name available PROPERTY[DOMAINCHECK][72]=210 Available PROPERTY[DOMAINCHECK][73]=210 Available DESCRIPTION=Command completed successfully";
preg_match_all("/PROPERTY\[DOMAINCHECK\]\[\d+\].*?=(\d+)/is",$b,$arr1);
var_dump($arr1[1]);运行代码显示:
array(2) { [0]=> string(3) "210" [1]=> string(3) "210" } 输出显示,$arr1[1]数组的元素是2个,而且值都是210怎么回事呢?问题出在哪里?请高手指点

解决方案 »

  1.   


    $a = "PROPERTY[DOMAINCHECK][0]=210 Domain name available PROPERTY[DOMAINCHECK][1]=210 Domain name available PROPERTY[DOMAINCHECK][2]=210 Domain name available PROPERTY[DOMAINCHECK][3]=210 Domain name available PROPERTY[DOMAINCHECK][4]=211 Domain name not available PROPERTY[DOMAINCHECK][5]=210 Domain name available PROPERTY[DOMAINCHECK][6]=210 Domain name available PROPERTY[DOMAINCHECK][7]=210 Domain name available PROPERTY[DOMAINCHECK][8]=210 Domain name available PROPERTY[DOMAINCHECK][9]=210 Available PROPERTY[DOMAINCHECK][10]=210 Available PROPERTY[DOMAINCHECK][11]=210 Domain name available PROPERTY[DOMAINCHECK][12]= PROPERTY[DOMAINCHECK][13]=210 Domain name available PROPERTY[DOMAINCHECK][14]=210 Domain name available PROPERTY[DOMAINCHECK][15]=210 Domain name available PROPERTY[DOMAINCHECK][16]=210 Domain name available PROPERTY[DOMAINCHECK][17]=210 Available PROPERTY[DOMAINCHECK][18]=210 Domain name available PROPERTY[DOMAINCHECK][19]=210 Available PROPERTY[DOMAINCHECK][20]=210 Domain name available PROPERTY[DOMAINCHECK][21]=210 Domain name available PROPERTY[DOMAINCHECK][22]=210 Available PROPERTY[DOMAINCHECK][23]=210 Domain name available PROPERTY[DOMAINCHECK][24]= PROPERTY[DOMAINCHECK][25]=210 Domain name available PROPERTY[DOMAINCHECK][26]=210 Available PROPERTY[DOMAINCHECK][27]=210 Domain name available PROPERTY[DOMAINCHECK][28]=210 Available PROPERTY[DOMAINCHECK][29]=210 Available PROPERTY[DOMAINCHECK][30]=210 Domain name available PROPERTY[DOMAINCHECK][31]=210 Available PROPERTY[DOMAINCHECK][32]=210 Available PROPERTY[DOMAINCHECK][33]=210 Available PROPERTY[DOMAINCHECK][34]=210 Domain name available PROPERTY[DOMAINCHECK][35]=210 Available PROPERTY[DOMAINCHECK][36]=210 Domain name available PROPERTY[DOMAINCHECK][37]=210 Domain name available PROPERTY[DOMAINCHECK][38]=210 Available PROPERTY[DOMAINCHECK][39]=210 Domain name available PROPERTY[DOMAINCHECK][40]=210 Domain name available PROPERTY[DOMAINCHECK][41]=210 Available PROPERTY[DOMAINCHECK][42]=210 Domain name available PROPERTY[DOMAINCHECK][43]=210 Domain name available PROPERTY[DOMAINCHECK][44]=210 Domain name available PROPERTY[DOMAINCHECK][45]=210 Available PROPERTY[DOMAINCHECK][46]=210 Domain name available PROPERTY[DOMAINCHECK][47]=210 Domain name available PROPERTY[DOMAINCHECK][48]=210 Domain name available; temporary no connection to registry, please proceed to register. We will process your order once connection is up. PROPERTY[DOMAINCHECK][49]=210 Domain name available PROPERTY[DOMAINCHECK][50]=210 Available PROPERTY[DOMAINCHECK][51]=210 Available PROPERTY[DOMAINCHECK][52]=210 Available PROPERTY[DOMAINCHECK][53]=210 Domain name available PROPERTY[DOMAINCHECK][54]=210 Domain name available PROPERTY[DOMAINCHECK][55]=210 Available PROPERTY[DOMAINCHECK][56]=210 Domain name available PROPERTY[DOMAINCHECK][57]=210 Domain name available PROPERTY[DOMAINCHECK][58]=210 Domain name available PROPERTY[DOMAINCHECK][59]=210 Domain name available PROPERTY[DOMAINCHECK][60]=210 Domain name available PROPERTY[DOMAINCHECK][61]=210 Available PROPERTY[DOMAINCHECK][62]=421 SERVICE OFFLINE PROPERTY[DOMAINCHECK][63]=210 Domain name available PROPERTY[DOMAINCHECK][64]=210 Available PROPERTY[DOMAINCHECK][65]=210 Available PROPERTY[DOMAINCHECK][66]=210 Available PROPERTY[DOMAINCHECK][67]=210 Domain name available PROPERTY[DOMAINCHECK][68]=210 Domain name available PROPERTY[DOMAINCHECK][69]=210 Domain name available PROPERTY[DOMAINCHECK][70]=210 Domain name available PROPERTY[DOMAINCHECK][71]=210 Domain name available PROPERTY[DOMAINCHECK][72]=210 Available PROPERTY[DOMAINCHECK][73]=210 Available";有两个内容为空... 
      

  2.   

    Domain name available PROPERTY[DOMAINCHECK][12]=
    Domain name available PROPERTY[DOMAINCHECK][24]= 
    没出来效果 郁闷
      

  3.   

    这样就74个了,不过有两个是空值preg_match_all("/PROPERTY\[DOMAINCHECK\]\[\d+\]\s*=(.*?)\s+/is",$a,$arr);
    var_dump($arr[1]);
      

  4.   

    你用\d*也是一样的,\d+就是72个,\d*就是74个,就这么简单,\s*都是加强容错性,防止有空格的
      

  5.   


    正解=号前面没有空格,为什么要用\s*呢?
    ---------------------------------
    防止有空格的,不加这个\s*也没事还有=后面是三个数字,为什么用.*?匹配呢?
    -----------------------------------------
    有3个数字的,也有空的
    所以用(.*?) 或者 \d*