3v4l.org

run code in 500+ PHP versions simultaneously
<?php $dom = new DOMDocument(); $dom->loadHtml(' <p class = "ft00">Introduction</p> <p class = "ft00">John Smith</p> <p class = "ft02">Email:</p> <p class = "ft00">John@gmail.com</p> <p class = "ft00">Work Experience</p> <p class = "ft00">27 July 2017</p> <p class = "ft02">ABC Company</p> <p class = "ft00">19 May 2018</p> <p class ="ft02">XYZ Company</p> <p class = "ft00">EDUCATION AND TRAINING</p> ', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($dom); $result = []; $matching = false; foreach ($xpath->query("//p[contains(@class, 'ft00') or contains(@class, 'ft02')]/text()") as $p) { if ($p->nodeValue === 'Work Experience' || $matching) { $result[] = $p->nodeValue; $matching = true; } } print_r($result);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 28
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 28
Branch analysis from position: 18
2 jumps found. (Code = 47) Position 1 = 21, Position 2 = 22
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 27
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 27
Branch analysis from position: 22
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 28
filename:       /in/0nvr4
function name:  (null)
number of ops:  33
compiled vars:  !0 = $dom, !1 = $xpath, !2 = $result, !3 = $matching, !4 = $p
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    2     0  E >   NEW                                                  $5      'DOMDocument'
          1        DO_FCALL                                          0          
          2        ASSIGN                                                       !0, $5
    4     3        INIT_METHOD_CALL                                             !0, 'loadHtml'
          4        SEND_VAL_EX                                                  '%0A%3Cp+class+%3D+%22ft00%22%3EIntroduction%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3EJohn+Smith%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft02%22%3EEmail%3A%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3EJohn%40gmail.com%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3EWork+Experience%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3E27+July+2017%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft02%22%3EABC+Company%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3E19+May+2018%3C%2Fp%3E%0A%3Cp+class+%3D%22ft02%22%3EXYZ+Company%3C%2Fp%3E%0A%3Cp+class+%3D+%22ft00%22%3EEDUCATION+AND+TRAINING%3C%2Fp%3E%0A'
   15     5        SEND_VAL_EX                                                  8196
    4     6        DO_FCALL                                          0          
   17     7        NEW                                                  $9      'DOMXPath'
          8        SEND_VAR_EX                                                  !0
          9        DO_FCALL                                          0          
         10        ASSIGN                                                       !1, $9
   19    11        ASSIGN                                                       !2, <array>
   20    12        ASSIGN                                                       !3, <false>
   21    13        INIT_METHOD_CALL                                             !1, 'query'
         14        SEND_VAL_EX                                                  '%2F%2Fp%5Bcontains%28%40class%2C+%27ft00%27%29+or+contains%28%40class%2C+%27ft02%27%29%5D%2Ftext%28%29'
         15        DO_FCALL                                          0  $14     
         16      > FE_RESET_R                                           $15     $14, ->28
         17    > > FE_FETCH_R                                                   $15, !4, ->28
   22    18    >   FETCH_OBJ_R                                          ~16     !4, 'nodeValue'
         19        IS_IDENTICAL                                         ~17     ~16, 'Work+Experience'
         20      > JMPNZ_EX                                             ~17     ~17, ->22
         21    >   BOOL                                                 ~17     !3
         22    > > JMPZ                                                         ~17, ->27
   23    23    >   FETCH_OBJ_R                                          ~19     !4, 'nodeValue'
         24        ASSIGN_DIM                                                   !2
         25        OP_DATA                                                      ~19
   24    26        ASSIGN                                                       !3, <true>
   21    27    > > JMP                                                          ->17
         28    >   FE_FREE                                                      $15
   28    29        INIT_FCALL                                                   'print_r'
         30        SEND_VAR                                                     !2
         31        DO_ICALL                                                     
         32      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
162.54 ms | 2150 KiB | 14 Q