1. <?php
  2. /**
  3. * Cleans metadata data for routine automation.
  4. * Handles various edge cases to ensure data integrity.
  5. *
  6. * @param array $metadata_data An array of metadata data.
  7. * @return array Cleaned metadata data.
  8. */
  9. function cleanMetadata(array $metadata_data): array
  10. {
  11. $cleaned_data = [];
  12. foreach ($metadata_data as $key => $value) {
  13. // Handle null/empty values
  14. if ($value === null || $value === '') {
  15. $cleaned_data[$key] = null; // or empty string, depending on requirement
  16. continue;
  17. }
  18. // Data type conversion and validation
  19. if (is_string($value)) {
  20. $cleaned_data[$key] = trim($value); // Remove leading/trailing whitespace
  21. $cleaned_data[$key] = htmlspecialchars($cleaned_data[$key], ENT_QUOTES, 'UTF-8'); //Escape HTML entities for security
  22. } elseif (is_int($value)) {
  23. $cleaned_data[$key] = (int)$value; // Ensure integer type
  24. } elseif (is_float($value)) {
  25. $cleaned_data[$key] = (float)$value; // Ensure float type
  26. } elseif (is_array($value)) {
  27. //Handle arrays - flatten or process recursively as needed
  28. $cleaned_array = [];
  29. foreach($value as $item){
  30. if(is_string($item)){
  31. $cleaned_array[] = trim($item);
  32. }
  33. //Add other type handling if needed
  34. }
  35. $cleaned_data[$key] = $cleaned_array;
  36. } else {
  37. // Unknown data type - log or handle as needed
  38. error_log("Unknown data type for key: " . $key . ". Value: " . $value);
  39. $cleaned_data[$key] = null; // or a default value
  40. }
  41. }
  42. return $cleaned_data;
  43. }
  44. //Example Usage:
  45. /*
  46. $metadata = [
  47. 'name' => ' John Doe ',
  48. 'email' => '',
  49. 'age' => '30',
  50. 'tags' => ['tag1', 'tag2'],
  51. 'description' => '<div>Some HTML</div>',
  52. 'active' => true,
  53. 'value' => 123.45,
  54. 'null_value' => null
  55. ];
  56. $cleanedMetadata = cleanMetadata($metadata);
  57. print_r($cleanedMetadata);
  58. */
  59. ?>

Add your comment