From be8546bdf55f9c77012217ec510b81d9d5fd58b3 Mon Sep 17 00:00:00 2001 From: cynic Date: Thu, 14 Sep 2023 19:10:13 -0500 Subject: [PATCH] make 'oracles' feature backwards compatible with php 7.4 (#13) adds implementations of `str_contains` and `str_starts_with` that are used if the functions are not already defined. this should enable 4get to work on both php 7.4 and php 8.* my instance is currently on 7.4.33, and you can see the oracles working here: [calc.php](https://4get.silly.computer/web?s=2%2B4*(2^2)) [encoder.php](https://4get.silly.computer/web?s=md5+hamburger) [numerics.php](https://4get.silly.computer/web?s=0xf0f0f) [time.php](https://4get.silly.computer/web?s=what+is+the+time+right+now+tz%253Aest) Reviewed-on: https://git.lolcat.ca/lolcat/4get/pulls/13 Co-authored-by: cynic Co-committed-by: cynic --- oracles/base.php | 12 ++++++++++++ oracles/calc.php | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/oracles/base.php b/oracles/base.php index 45747fc..84299fd 100644 --- a/oracles/base.php +++ b/oracles/base.php @@ -21,4 +21,16 @@ abstract class oracle { return ""; } } +// backwards compatibility +if (!function_exists('str_starts_with')) { + function str_starts_with($haystack, $needle) { + return strncmp($haystack, $needle, strlen($needle)) === 0;; + } +} +if (!function_exists('str_contains')) { + function str_contains($haystack, $needle) { + return strpos((string)$haystack, (string)$needle) !== false; + } +} + ?> \ No newline at end of file diff --git a/oracles/calc.php b/oracles/calc.php index 4888b95..bcc127b 100644 --- a/oracles/calc.php +++ b/oracles/calc.php @@ -84,6 +84,13 @@ class calculator extends oracle { } } + // no implicit multiplication + for ($i = 0; $i < count($tokens) - 1; $i++) { + if ($tokens[$i][0] == "n" && $tokens[$i+1] == ["g", "("]) { + return ""; + } + } + //strategy: // traverse to group open (if there is one) // - return to start with the internals