Finding entry points Branch analysis from position: 0 1 jumps found. (Code = 62) Position 1 = -2 filename: /in/WuPSt function name: (null) number of ops: 67 compiled vars: !0 = $xhtml, !1 = $document, !2 = $xpath line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 6 0 E > ASSIGN !0, '%3Chtml%3E%0A++%3Chead%3E%0A++++%3Ctitle%3ETable+test+page%3C%2Ftitle%3E%0A++%3C%2Fhead%3E%0A++%3Cbody%3E%0A++++%3Ctable%3E%0A++++++%3Ctr%3E%0A++++++++%3Cth%3ECell+1%3C%2Fth%3E%0A++++++++%3Ctd%3ECell+2%3C%2Ftd%3E%0A++++++%3C%2Ftr%3E%0A++++%3C%2Ftable%3E%0A++++%3Ctable%3E%0A++++++%3Ctr%3E%0A++++++++%3Cth%3ECell+1%3C%2Fth%3E%0A++++++++%3Cth%3ECell+2%3C%2Fth%3E%0A++++++%3C%2Ftr%3E%0A++++%3C%2Ftable%3E%0A++%3C%2Fbody%3E%0A%3C%2Fhtml%3E' 28 1 NEW $4 'DOMDocument' 2 DO_FCALL 0 3 ASSIGN !1, $4 29 4 INIT_METHOD_CALL !1, 'loadXML' 5 SEND_VAR_EX !0 6 DO_FCALL 0 30 7 NEW $8 'DOMXPath' 8 SEND_VAR_EX !1 9 DO_FCALL 0 10 ASSIGN !2, $8 32 11 DECLARE_LAMBDA_FUNCTION ~11 [0] 12 BIND_LEXICAL ~11, !2 13 ASSIGN !2, ~11 53 14 ECHO 'I+am+using+the+following+XPath+expression+to+select+table+cells+from%0A' 54 15 ECHO 'the+first+row+of+the+first+table%2C+by+combining+the+results+for+%3Cth%3E%0A' 55 16 ECHO 'and+%3Ctd%3E.+This+works+fine%2C+I+get+both+cells+back.%0A' 56 17 ECHO 'Note+that+the+first+table+combines+%3Cth%3E+and+%3Ctd%3E+in+a+single+row.%0A' 57 18 INIT_DYNAMIC_CALL !2 19 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29' 20 DO_FCALL 0 59 21 ECHO 'When+I+try+to+get+the+first+cell+by+appending+%5B1%5D+to+the+expression%0A' 60 22 ECHO 'I+get+the+second+cell+back+instead+of+the+first.+Why%3F%0A' 61 23 ECHO 'The+expected+result+of+this+expression+is+%27%3Cth%3ECell+1%3C%2Fth%3E%27%0A' 62 24 INIT_DYNAMIC_CALL !2 25 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B1%5D' 26 DO_FCALL 0 64 27 ECHO 'Appending+%5B2%5D+yields+the+second+cell+successfully.+But+why+not+the+first%3F%0A' 65 28 INIT_DYNAMIC_CALL !2 29 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B2%5D' 30 DO_FCALL 0 67 31 ECHO 'Similarly%2C+for+the+second+table+I+can+get+all+cells+with+this+expression.%0A' 68 32 ECHO 'The+second+table+only+contains+%3Cth%3E+cells+in+the+first+row.%0A' 69 33 INIT_DYNAMIC_CALL !2 34 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29' 35 DO_FCALL 0 71 36 ECHO 'However%2C+when+I+append+%5B1%5D+to+get+only+the+first+cell+back%2C+I+get+an+empty+result.%0A' 72 37 ECHO 'The+expected+result+for+this+expression+is+%27%3Cth%3ECell+1%3C%2Fth%3E%27%0A' 73 38 INIT_DYNAMIC_CALL !2 39 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B1%5D' 40 DO_FCALL 0 75 41 ECHO 'The+second+cell+can+be+retrieved+successfully+by+appending+%5B2%5D.%0A' 76 42 ECHO 'But+why+not+the+first%3F%0A' 77 43 INIT_DYNAMIC_CALL !2 44 SEND_VAL_EX '%28%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28descendant-or-self%3A%3Ahtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B2%5D' 45 DO_FCALL 0 79 46 ECHO 'Note+that+by+replacing+the+first+%27descendant-or-self%27+with+%27%2F%2F%27+the+expression%0A' 80 47 ECHO 'seems+to+work+as+expected+in+all+cases+for+both+the+first+and+second+table%3A%0A' 81 48 INIT_DYNAMIC_CALL !2 49 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29' 50 DO_FCALL 0 82 51 INIT_DYNAMIC_CALL !2 52 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B1%5D' 53 DO_FCALL 0 83 54 INIT_DYNAMIC_CALL !2 55 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B1%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B2%5D' 56 DO_FCALL 0 84 57 INIT_DYNAMIC_CALL !2 58 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29' 59 DO_FCALL 0 85 60 INIT_DYNAMIC_CALL !2 61 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B1%5D' 62 DO_FCALL 0 86 63 INIT_DYNAMIC_CALL !2 64 SEND_VAL_EX '%28%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Ftd%7C%28%28%2F%2Fhtml%2Fdescendant-or-self%3A%3Atable%29%5B2%5D%2F%2Ftr%29%5B1%5D%2Fth%29%5B2%5D' 65 DO_FCALL 0 66 > RETURN 1 Dynamic Functions: Dynamic Function 0 Finding entry points Branch analysis from position: 0 2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 17 Branch analysis from position: 13 1 jumps found. (Code = 42) Position 1 = 27 Branch analysis from position: 27 2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 32 Branch analysis from position: 30 1 jumps found. (Code = 42) Position 1 = 33 Branch analysis from position: 33 2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 37 Branch analysis from position: 35 1 jumps found. (Code = 42) Position 1 = 38 Branch analysis from position: 38 2 jumps found. (Code = 77) Position 1 = 42, Position 2 = 60 Branch analysis from position: 42 2 jumps found. (Code = 78) Position 1 = 43, Position 2 = 60 Branch analysis from position: 43 1 jumps found. (Code = 42) Position 1 = 42 Branch analysis from position: 42 Branch analysis from position: 60 1 jumps found. (Code = 62) Position 1 = -2 Branch analysis from position: 60 Branch analysis from position: 37 2 jumps found. (Code = 77) Position 1 = 42, Position 2 = 60 Branch analysis from position: 42 Branch analysis from position: 60 Branch analysis from position: 32 2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 37 Branch analysis from position: 35 Branch analysis from position: 37 Branch analysis from position: 17 2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 32 Branch analysis from position: 30 Branch analysis from position: 32 filename: /in/WuPSt function name: {closure} number of ops: 63 compiled vars: !0 = $query, !1 = $xpath, !2 = $result, !3 = $count, !4 = $result_array, !5 = $element, !6 = $document line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 32 0 E > RECV !0 1 BIND_STATIC !1 33 2 CONCAT ~7 !0, '%0A' 3 ECHO ~7 34 4 INIT_METHOD_CALL !1, 'query' 5 SEND_VAR_EX !0 6 DO_FCALL 0 $8 7 ASSIGN !2, $8 35 8 INIT_FCALL 'method_exists' 9 SEND_VAR !2 10 SEND_VAL 'count' 11 DO_ICALL $10 12 > JMPZ $10, ->17 36 13 > INIT_METHOD_CALL !2, 'count' 14 DO_FCALL 0 $11 15 ASSIGN !3, $11 35 16 > JMP ->27 39 17 > INIT_FCALL 'iterator_to_array' 18 SEND_VAR !2 19 DO_ICALL $13 20 ASSIGN !4, $13 41 21 INIT_FCALL 'array_filter' 22 SEND_VAR !4 23 DO_ICALL $15 24 ASSIGN !4, $15 42 25 COUNT ~17 !4 26 ASSIGN !3, ~17 44 27 > CONCAT ~19 !3, '+result' 28 IS_NOT_EQUAL !3, 1 29 > JMPZ ~20, ->32 30 > QM_ASSIGN ~21 's' 31 > JMP ->33 32 > QM_ASSIGN ~21 '' 33 > CONCAT ~22 ~19, ~21 34 > JMPZ !3, ->37 35 > QM_ASSIGN ~23 '%3A' 36 > JMP ->38 37 > QM_ASSIGN ~23 '' 38 > CONCAT ~24 ~22, ~23 39 CONCAT ~25 ~24, '%0A' 40 ECHO ~25 45 41 > FE_RESET_R $26 !2, ->60 42 > > FE_FETCH_R $26, !5, ->60 46 43 > NEW $27 'DOMDocument' 44 DO_FCALL 0 45 ASSIGN !6, $27 47 46 INIT_METHOD_CALL !6, 'appendChild' 47 INIT_METHOD_CALL !6, 'importNode' 48 INIT_METHOD_CALL !5, 'cloneNode' 49 SEND_VAL_EX <true> 50 DO_FCALL 0 $30 51 SEND_VAR_NO_REF_EX $30 52 SEND_VAL_EX <true> 53 DO_FCALL 0 $31 54 SEND_VAR_NO_REF_EX $31 55 DO_FCALL 0 48 56 INIT_METHOD_CALL !6, 'saveHTML' 57 DO_FCALL 0 $33 58 ECHO $33 45 59 > JMP ->42 60 > FE_FREE $26 50 61 ECHO '%0A' 51 62 > RETURN null End of Dynamic Function 0
Generated using Vulcan Logic Dumper, using php 8.0.0