假设有一字符串,内容如下:
$content="<ReceiptId>111</ReceiptId><ReceiptId>222</ReceiptId><ReceiptId>333</ReceiptId>"
请问用什么样的正则表达式可以获利到第二个<ReceiptId><ReceiptId>标志中的数字222?    

解决方案 »

  1.   

    偶刚学php啊,正在编写一个网银的自动支付程序,朋友就直接告诉俺一下啦,谢谢了。
      

  2.   

    <?php
    $content=" <ReceiptId>111 </ReceiptId> <ReceiptId>222 </ReceiptId> <ReceiptId>333 </ReceiptId>";
    $reg = "#<ReceiptId>\s*(\d+)\s*</ReceiptId>#";
    preg_match_all($reg, $content, $matterns);
    var_dump($matterns);?>
      

  3.   

    <?php
       $content=" <ReceiptId>111 </ReceiptId> <ReceiptId>222 </ReceiptId> <ReceiptId>333 </ReceiptId>"
       preg_match_all("/ <ReceiptId.*?>(.*?) <\/ReceiptId>/",$content,$new);
       echo "<pre>";
       print_r($new);
       echo "</pre>";
    ?>
      

  4.   

    csdn论坛的问题,,正则自动加入了空格不过在这里没有影响结果
    #是正则界限符array(2) {
      [0]=>
      array(3) {
        [0]=>
        string(28) "<ReceiptId>111  </ReceiptId>"
        [1]=>
        string(28) "<ReceiptId>222  </ReceiptId>"
        [2]=>
        string(28) "<ReceiptId>333  </ReceiptId>"
      }
      [1]=>
      array(3) {
        [0]=>
        string(3) "111"
        [1]=>
        string(3) "222"
        [2]=>
        string(3) "333"
      }
    }
      

  5.   

    LS有些不妥吧!LZ说有一字符串,也不是光有数字,如果你写成\d,那么, <ReceiptId>abc </ReceiptId>的时候,abc就取不到了。
      

  6.   

    如果按你那样的话我感觉还是这么改一下能好点,
    <?php 
    $content="  <ReceiptId>111  </ReceiptId>  <ReceiptId>222  </ReceiptId>  <ReceiptId>333  </ReceiptId>"; 
    $reg = "# <ReceiptId>\s*(.*?)\s* </ReceiptId>#"; 
    preg_match_all($reg, $content, $matterns); 
    var_dump($matterns); 
    ?>
    不过还是要看业务需求了,如果需求全是数字的话就不用改了。