$var_idx = $idx - 2; while ($var_idx >= 0 && (!is_array($tokens[$var_idx]) || $tokens[$var_idx][0] !== T_VARIABLE)) { $var_idx--; } $var_name = is_array($tokens[$var_idx]) ? $tokens[$var_idx][1] : 'unknown'; $assign_var = 'unknown'; $assign_idx = $var_idx - 1; while ($assign_idx >= 0 && $tokens[$assign_idx] !== '=') { $assign_idx--; } if ($tokens[$assign_idx] === '=') { $left_idx = $assign_idx - 1; while ($left_idx >= 0 && (!is_array($tokens[$left_idx]) || $tokens[$left_idx][0] !== T_VARIABLE)) { $left_idx--; } $assign_var = is_array($tokens[$left_idx]) ? $tokens[$left_idx][1] : 'unknown'; } $stmt_str = ""; $j = $idx + 1; while($j < count($tokens) && $tokens[$j] !== ';') { $stmt_str .= is_array($tokens[$j]) ? $tokens[$j][1] : $tokens[$j]; $j++; } $qmarks = substr_count($stmt_str, '?'); $prepares[] = ['var' => $assign_var, 'qmarks' => $qmarks, 'str' => trim($stmt_str)]; } } foreach ($prepares as $p) { echo "{$p['var']} -> {$p['qmarks']} ? \n"; } echo "\n--- EXECUTIONS ---\\n"; for ($idx = 0; $idx < count($tokens); $idx++) { $token = $tokens[$idx]; if (is_array($token) && $token[1] === 'execute') { $var_idx = $idx - 2; while ($var_idx >= 0 && (!is_array($tokens[$var_idx]) || $tokens[$var_idx][0] !== T_VARIABLE)) { $var_idx--; } $var_name = is_array($tokens[$var_idx]) ? $tokens[$var_idx][1] : 'unknown'; $exec_str = ""; $j = $idx + 1; while($j < count($tokens) && $tokens[$j] !== ';') { $exec_str .= is_array($tokens[$j]) ? $tokens[$j][1] : $tokens[$j]; $j++; } echo "$var_name -> execute: " . trim($exec_str) . "\n"; } }