1. <?php
  2. /**
  3. * Normalizes header metadata for batch processing.
  4. *
  5. * This function takes an array of header metadata and standardizes
  6. * it to a consistent format. It focuses on simple normalization,
  7. * handling common variations in header names and values.
  8. *
  9. * @param array $header_metadata An array of header metadata. Each element
  10. * should be an associative array representing
  11. * a single header.
  12. * @return array Normalized header metadata. Returns an empty array on error.
  13. */
  14. function normalizeHeaderMetadata(array $header_metadata): array
  15. {
  16. $normalized_metadata = [];
  17. foreach ($header_metadata as $header) {
  18. $normalized_header = [];
  19. // Normalize 'header_name' key
  20. $normalized_header['name'] = trim($header['header_name']);
  21. // Normalize 'header_value' key - handle different data types
  22. $normalized_header['value'] = trim($header['header_value']);
  23. if (is_numeric($normalized_header['value'])) {
  24. $normalized_header['value'] = (float)$normalized_header['value']; // Convert to float if numeric
  25. } else {
  26. $normalized_header['value'] = $normalized_header['value']; // Keep as string otherwise
  27. }
  28. //Add other potential normalized keys, like 'description'
  29. if(isset($header['description'])){
  30. $normalized_header['description'] = trim($header['description']);
  31. }
  32. $normalized_metadata[] = $normalized_header;
  33. }
  34. return $normalized_metadata;
  35. }
  36. //Example Usage (for testing)
  37. /*
  38. $header_data = [
  39. ['header_name' => ' Content-Type ', 'header_value' => 'text/html'],
  40. ['header_name' => ' Cache-Control ', 'header_value' => 'no-cache'],
  41. ['header_name' => ' Max-Age ', 'header_value' => '3600'],
  42. ['header_name' => 'description', 'header_value' => 'This is a test description']
  43. ];
  44. $normalized_data = normalizeHeaderMetadata($header_data);
  45. print_r($normalized_data);
  46. */
  47. ?>

Add your comment