3v4l.org

run code in 300+ PHP versions simultaneously
<?php $str ="<optgroup label='Billing Summary Reports' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='JobTracking'>Job Tracking</option> <option style='color:black; font-weight:normal' value='CustomerRouting' selected>Customer Routing Report</option> <option style='color:black; font-weight:normal' value='BillingStatistics'>Billing Statistics</option> <option style='color:black; font-weight:normal' value='BranchReport'>Branch Report</option> <option style='color:black; font-weight:normal' value='BranchBilling'>Branch Billing Report</option> <option style='color:black; font-weight:normal' value='BillingActivityDetail'>Billing Activity Details</option> </optgroup> <optgroup label='e-Adoption Reports' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='eAdoptionDashboard'>e-Adoption Dashboard</option> <option style='color:black; font-weight:normal' value='eAdoptionReport'>e-Adoption Chart</option> <option style='color:black; font-weight:normal' value='TopBillingCusts'>Top Paper Customers</option> <option style='color:black; font-weight:normal' value='TopBillingCustsAcctNum'>Top Paper Custs by Acct Num</option> <option style='color:black; font-weight:normal' value='BranchEBillReport'>Branch Electronic Report</option> <option style='color:black; font-weight:normal' value='EasyImportUsage'>EasyImport Usage</option> </optgroup> <optgroup label='eBilling and ePayment' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='OnlinePayments'>Online Payments</option> <option style='color:black; font-weight:normal' value='PaymentFile'>Payment File Report</option> <option style='color:black; font-weight:normal' value='ACHTransfers'>ACH Transfers</option> <option style='color:black; font-weight:normal' value='IGUsage'>Invoice Gateway Usage Report</option> <option style='color:black; font-weight:normal' value='ObpAccountAudit'>Online Account Audit Report</option> <option style='color:black; font-weight:normal' value='EUsageReport'>Invoice Central Usage Report</option> <option style='color:black; font-weight:normal' value='IGUsers'>Online User Report</option> <option style='color:black; font-weight:normal' value='eDSOReport'>eDSO By Month</option> <option style='color:black; font-weight:normal' value='AutoPay'>Auto Pay Report</option> </optgroup> <optgroup label='Bullpen Reports' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='BPInvoices'>Bullpenned Invoices</option> <option style='color:black; font-weight:normal' value='BPStatistics'>Bullpen Statistics</option> </optgroup> <optgroup label='Address Reports' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='UncertifiedAddresses'>Uncertified Addresses</option> <option style='color:black; font-weight:normal' value='NCOAAddressesReport'>NCOA Addresses</option> </optgroup> <optgroup label='Miscellaneous' style='color:blue;font-weight:bold;'> <option style='color:black; font-weight:normal' value='InvoiceExtract'>Invoice Extract</option> <option style='color:black; font-weight:normal' value='FaxFailures'>Fax Failures</option> <option style='color:black; font-weight:normal' value='EmailFailures'>Transmittal Failures</option>"; $rptList = array(); $doc = new DOMDocument(); $doc->loadHTML($str); $headings = $doc->getElementsByTagName('optgroup'); $books = $doc->getElementsByTagName('option'); foreach($headings as $heading) { $parentItem = $heading->getAttribute('label'); if($heading->hasChildNodes()) { $childItems = $heading->getElementsByTagName('option'); foreach ($childItems as $childItem) { $rptList[$parentItem][] = $childItem->nodeValue; } } } print_r($headings);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 38
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 38
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 25, Position 2 = 37
Branch analysis from position: 25
2 jumps found. (Code = 77) Position 1 = 30, Position 2 = 36
Branch analysis from position: 30
2 jumps found. (Code = 78) Position 1 = 31, Position 2 = 36
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
Branch analysis from position: 36
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 36
Branch analysis from position: 37
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 38
filename:       /in/ff5DM
function name:  (null)
number of ops:  43
compiled vars:  !0 = $str, !1 = $rptList, !2 = $doc, !3 = $headings, !4 = $books, !5 = $heading, !6 = $parentItem, !7 = $childItems, !8 = $childItem
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%3Coptgroup+label%3D%27Billing+Summary+Reports%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27JobTracking%27%3EJob+Tracking%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27CustomerRouting%27+selected%3ECustomer+Routing+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BillingStatistics%27%3EBilling+Statistics%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BranchReport%27%3EBranch+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BranchBilling%27%3EBranch+Billing+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BillingActivityDetail%27%3EBilling+Activity+Details%3C%2Foption%3E%0A%3C%2Foptgroup%3E%0A%3Coptgroup+label%3D%27e-Adoption+Reports%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27eAdoptionDashboard%27%3Ee-Adoption+Dashboard%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27eAdoptionReport%27%3Ee-Adoption+Chart%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27TopBillingCusts%27%3ETop+Paper+Customers%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27TopBillingCustsAcctNum%27%3ETop+Paper+Custs+by+Acct+Num%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BranchEBillReport%27%3EBranch+Electronic+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27EasyImportUsage%27%3EEasyImport+Usage%3C%2Foption%3E%0A%3C%2Foptgroup%3E%0A%3Coptgroup+label%3D%27eBilling+and+ePayment%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27OnlinePayments%27%3EOnline+Payments%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27PaymentFile%27%3EPayment+File+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27ACHTransfers%27%3EACH+Transfers%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27IGUsage%27%3EInvoice+Gateway+Usage+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27ObpAccountAudit%27%3EOnline+Account+Audit+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27EUsageReport%27%3EInvoice+Central+Usage+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27IGUsers%27%3EOnline+User+Report%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27eDSOReport%27%3EeDSO+By+Month%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27AutoPay%27%3EAuto+Pay+Report%3C%2Foption%3E%0A%3C%2Foptgroup%3E%0A%3Coptgroup+label%3D%27Bullpen+Reports%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BPInvoices%27%3EBullpenned+Invoices%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27BPStatistics%27%3EBullpen+Statistics%3C%2Foption%3E%0A%3C%2Foptgroup%3E%0A%3Coptgroup+label%3D%27Address+Reports%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27UncertifiedAddresses%27%3EUncertified+Addresses%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27NCOAAddressesReport%27%3ENCOA+Addresses%3C%2Foption%3E%0A%3C%2Foptgroup%3E%0A%3Coptgroup+label%3D%27Miscellaneous%27+style%3D%27color%3Ablue%3Bfont-weight%3Abold%3B%27%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27InvoiceExtract%27%3EInvoice+Extract%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27FaxFailures%27%3EFax+Failures%3C%2Foption%3E%0A++++%3Coption+style%3D%27color%3Ablack%3B+font-weight%3Anormal%27+value%3D%27EmailFailures%27%3ETransmittal+Failures%3C%2Foption%3E'
   43     1        ASSIGN                                                   !1, <array>
   45     2        NEW                                              $11     'DOMDocument'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !2, $11
   46     5        INIT_METHOD_CALL                                         !2, 'loadHTML'
          6        SEND_VAR_EX                                              !0
          7        DO_FCALL                                      0          
   47     8        INIT_METHOD_CALL                                         !2, 'getElementsByTagName'
          9        SEND_VAL_EX                                              'optgroup'
         10        DO_FCALL                                      0  $15     
         11        ASSIGN                                                   !3, $15
   48    12        INIT_METHOD_CALL                                         !2, 'getElementsByTagName'
         13        SEND_VAL_EX                                              'option'
         14        DO_FCALL                                      0  $17     
         15        ASSIGN                                                   !4, $17
   49    16      > FE_RESET_R                                       $19     !3, ->38
         17    > > FE_FETCH_R                                               $19, !5, ->38
   50    18    >   INIT_METHOD_CALL                                         !5, 'getAttribute'
         19        SEND_VAL_EX                                              'label'
         20        DO_FCALL                                      0  $20     
         21        ASSIGN                                                   !6, $20
   51    22        INIT_METHOD_CALL                                         !5, 'hasChildNodes'
         23        DO_FCALL                                      0  $22     
         24      > JMPZ                                                     $22, ->37
   52    25    >   INIT_METHOD_CALL                                         !5, 'getElementsByTagName'
         26        SEND_VAL_EX                                              'option'
         27        DO_FCALL                                      0  $23     
         28        ASSIGN                                                   !7, $23
   53    29      > FE_RESET_R                                       $25     !7, ->36
         30    > > FE_FETCH_R                                               $25, !8, ->36
   54    31    >   FETCH_OBJ_R                                      ~28     !8, 'nodeValue'
         32        FETCH_DIM_W                                      $26     !1, !6
         33        ASSIGN_DIM                                               $26
         34        OP_DATA                                                  ~28
   53    35      > JMP                                                      ->30
         36    >   FE_FREE                                                  $25
   49    37    > > JMP                                                      ->17
         38    >   FE_FREE                                                  $19
   59    39        INIT_FCALL                                               'print_r'
         40        SEND_VAR                                                 !3
         41        DO_ICALL                                                 
         42      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
157.72 ms | 1404 KiB | 15 Q