$line) { if (preg_match("/public function (\w*)[(]/", $line, $matches)) { $last_match = stripos($matches[1], 'async') === false ? $matches[1] : null; } if (preg_match("/function [(]/", $line) && stripos($line, 'public function') === false) { $last_match = 0; } if (strpos($line, "yield") !== false) { if ($last_match) { echo ("subbing $last_match for $line at $number in $file".PHP_EOL); $to_sub []= $last_match; } else if ($last_match === 0) { echo ("============\nNOT SUBBING $last_match for $line at $number in $file\n============".PHP_EOL); $not_subbing[$file] = $file; } } } $input = []; $output = []; foreach ($to_sub as $func) { $input []= "public function $func("; $output []= "public function $func"."_async("; } if ($input) file_put_contents($file, str_replace($input, $output, $filec)); } var_dump(array_values($not_subbing));