1. <?php
  2. /**
  3. * Flags anomalies in query strings for backward compatibility.
  4. *
  5. * This function checks for potentially problematic query string parameters
  6. * and flags them as anomalies. It avoids asynchronous operations for
  7. * compatibility with older PHP versions.
  8. *
  9. * @param array $query_string An associative array representing the query string.
  10. * @param array $anomaly_rules An array of anomaly rules. Each rule is an array
  11. * with keys 'parameter' and 'regex'.
  12. * 'parameter' is the name of the parameter to check.
  13. * 'regex' is a regular expression to match.
  14. * @return array An array of flagged anomalies. Each anomaly is an associative
  15. * array with keys 'parameter' and 'message'.
  16. */
  17. function flagQueryStringAnomalies(array $query_string, array $anomaly_rules): array
  18. {
  19. $anomalies = [];
  20. foreach ($anomaly_rules as $rule) {
  21. $parameter = $rule['parameter'];
  22. $regex = $rule['regex'];
  23. if (isset($query_string[$parameter])) {
  24. if (preg_match($regex, $query_string[$parameter])) {
  25. $anomalies[] = [
  26. 'parameter' => $parameter,
  27. 'message' => "Anomaly detected: Parameter '$parameter' value matches regex '$regex'.",
  28. ];
  29. }
  30. }
  31. }
  32. return $anomalies;
  33. }
  34. // Example Usage (replace with your actual query string and rules)
  35. $query_string = [
  36. 'param1' => 'value1',
  37. 'param2' => '123abc', //Potential anomaly
  38. 'param3' => 'valid_value',
  39. 'param4' => 'some_value',
  40. ];
  41. $anomaly_rules = [
  42. ['parameter' => 'param2', 'regex' => '/[a-zA-Z]/'], // Check for non-numeric characters
  43. ['parameter' => 'param3', 'regex' => '/^[^a-zA-Z0-9_]+$/'], //Check for non-alphanumeric characters
  44. ];
  45. $anomalies = flagQueryStringAnomalies($query_string, $anomaly_rules);
  46. if (!empty($anomalies)) {
  47. echo "Anomalies detected:\n";
  48. foreach ($anomalies as $anomaly) {
  49. echo "- Parameter: " . $anomaly['parameter'] . ", Message: " . $anomaly['message'] . "\n";
  50. }
  51. } else {
  52. echo "No anomalies detected.\n";
  53. }
  54. ?>

Add your comment