3v4l.org

run code in 300+ PHP versions simultaneously
<?php $str = '<?xml version="1.0" encoding="UTF-8"?> <DATA> <sessionId>1073741(eA14011269142xC071</sessionId> <device_id></device_id> <sessionTime>1429457223</sessionTime> <trans_time>1429457223</trans_time> <mpb>1000</mpb> <user_id>1335</user_id> <user_name>ltt1835</user_name> <alias>Lotto8 陈</alias> <display_user_points>3999</display_user_points> <message>剩余积分不足, 请充值后再继续。</message> <transfer_points>0</transfer_points> <user_points>3999</user_points> <fund_status>100</fund_status> <Jackpot> <jackpot_amount>1582668</jackpot_amount> <jackpot_ceiling>10000</jackpot_ceiling> <jackpot_preserved>800000</jackpot_preserved> <message_front>总奖池目前已经高达</message_front> <message_mid>分,大奖随时开出,多玩多赢。</message_mid> <message_end></message_end> <message_top>两次开奖,奖上有奖,喜上加喜</message_top> </Jackpot> <card_number>1073741835</card_number> <status>1</status> </DATA>'; print_r( get_tag("status", "1", $str)); function get_tag( $attr, $value, $xml, $tag=null ) { if( is_null($tag) ) $tag = '\w+'; else $tag = preg_quote($tag); $attr = preg_quote($attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(['\"])$value\\2[^>]*>(.*?)<\/\\1>/"; preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $matches[3]; } ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rNUDb
function name:  (null)
number of ops:  10
compiled vars:  !0 = $str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3CDATA%3E%0A+%3CsessionId%3E1073741%28e%0F%04A14011269142xC%1F%04071%3C%2FsessionId%3E%0A+%3Cdevice_id%3E%3C%2Fdevice_id%3E%0A+%3CsessionTime%3E1429457223%3C%2FsessionTime%3E%0A+%3Ctrans_time%3E1429457223%3C%2Ftrans_time%3E%0A+%3Cmpb%3E1000%3C%2Fmpb%3E%0A+%3Cuser_id%3E1335%3C%2Fuser_id%3E%0A+%3Cuser_name%3Eltt1835%3C%2Fuser_name%3E%0A+%3Calias%3ELotto8+%E9%99%88%3C%2Falias%3E%0A+%3Cdisplay_user_points%3E3999%3C%2Fdisplay_user_points%3E%0A+%3Cmessage%3E%E5%89%A9%E4%BD%99%E7%A7%AF%E5%88%86%E4%B8%8D%E8%B6%B3%2C+%E8%AF%B7%E5%85%85%E5%80%BC%E5%90%8E%E5%86%8D%E7%BB%A7%E7%BB%AD%E3%80%82%3C%2Fmessage%3E%0A+%3Ctransfer_points%3E0%3C%2Ftransfer_points%3E%0A+%3Cuser_points%3E3999%3C%2Fuser_points%3E%0A+%3Cfund_status%3E100%3C%2Ffund_status%3E%0A+%3CJackpot%3E%0A+++%3Cjackpot_amount%3E1582668%3C%2Fjackpot_amount%3E%0A+++%3Cjackpot_ceiling%3E10000%3C%2Fjackpot_ceiling%3E%0A+++%3Cjackpot_preserved%3E800000%3C%2Fjackpot_preserved%3E%0A+++%3Cmessage_front%3E%E6%80%BB%E5%A5%96%E6%B1%A0%E7%9B%AE%E5%89%8D%E5%B7%B2%E7%BB%8F%E9%AB%98%E8%BE%BE%3C%2Fmessage_front%3E%0A+++%3Cmessage_mid%3E%E5%88%86%EF%BC%8C%E5%A4%A7%E5%A5%96%E9%9A%8F%E6%97%B6%E5%BC%80%E5%87%BA%EF%BC%8C%E5%A4%9A%E7%8E%A9%E5%A4%9A%E8%B5%A2%E3%80%82%3C%2Fmessage_mid%3E%0A+++%3Cmessage_end%3E%3C%2Fmessage_end%3E%0A+++%3Cmessage_top%3E%E4%B8%A4%E6%AC%A1%E5%BC%80%E5%A5%96%EF%BC%8C%E5%A5%96%E4%B8%8A%E6%9C%89%E5%A5%96%EF%BC%8C%E5%96%9C%E4%B8%8A%E5%8A%A0%E5%96%9C%3C%2Fmessage_top%3E%0A+%3C%2FJackpot%3E%0A+%3Ccard_number%3E1073741835%3C%2Fcard_number%3E%0A+%3Cstatus%3E1%3C%2Fstatus%3E%0A%3C%2FDATA%3E'
   30     1        INIT_FCALL                                               'print_r'
          2        INIT_FCALL_BY_NAME                                       'get_tag'
          3        SEND_VAL_EX                                              'status'
          4        SEND_VAL_EX                                              '1'
          5        SEND_VAR_EX                                              !0
          6        DO_FCALL                                      0  $2      
          7        SEND_VAR                                                 $2
          8        DO_ICALL                                                 
   51     9      > RETURN                                                   1

Function get_tag:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 8
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rNUDb
function name:  get_tag
number of ops:  39
compiled vars:  !0 = $attr, !1 = $value, !2 = $xml, !3 = $tag, !4 = $tag_regex, !5 = $matches
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   32     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV_INIT                                        !3      null
   33     4        TYPE_CHECK                                    2          !3
          5      > JMPZ                                                     ~6, ->8
   34     6    >   ASSIGN                                                   !3, '%5Cw%2B'
          7      > JMP                                                      ->12
   36     8    >   INIT_FCALL                                               'preg_quote'
          9        SEND_VAR                                                 !3
         10        DO_ICALL                                         $8      
         11        ASSIGN                                                   !3, $8
   38    12    >   INIT_FCALL                                               'preg_quote'
         13        SEND_VAR                                                 !0
         14        DO_ICALL                                         $10     
         15        ASSIGN                                                   !0, $10
   39    16        INIT_FCALL                                               'preg_quote'
         17        SEND_VAR                                                 !1
         18        DO_ICALL                                         $12     
         19        ASSIGN                                                   !1, $12
   41    20        CONCAT                                           ~14     '%2F%3C%28', !3
         21        ROPE_INIT                                     3  ~16     '%29%5B%5E%3E%5D%2A'
         22        ROPE_ADD                                      1  ~16     ~16, !0
         23        ROPE_END                                      2  ~15     ~16, '%5Cs%2A%3D%5Cs%2A'
         24        CONCAT                                           ~18     ~14, ~15
   42    25        ROPE_INIT                                     3  ~20     '%28%5B%27%22%5D%29'
         26        ROPE_ADD                                      1  ~20     ~20, !1
         27        ROPE_END                                      2  ~19     ~20, '%5C2%5B%5E%3E%5D%2A%3E%28.%2A%3F%29%3C%5C%2F%5C1%3E%2F'
         28        CONCAT                                           ~22     ~18, ~19
   41    29        ASSIGN                                                   !4, ~22
   44    30        INIT_FCALL                                               'preg_match_all'
         31        SEND_VAR                                                 !4
   45    32        SEND_VAR                                                 !2
   46    33        SEND_REF                                                 !5
   47    34        SEND_VAL                                                 1
         35        DO_ICALL                                                 
   49    36        FETCH_DIM_R                                      ~25     !5, 3
         37      > RETURN                                                   ~25
   50    38*     > RETURN                                                   null

End of function get_tag

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
159.18 ms | 1400 KiB | 19 Q