<?php
/**
* Cleans metadata data for routine automation.
* Handles various edge cases to ensure data integrity.
*
* @param array $metadata_data An array of metadata data.
* @return array Cleaned metadata data.
*/
function cleanMetadata(array $metadata_data): array
{
$cleaned_data = [];
foreach ($metadata_data as $key => $value) {
// Handle null/empty values
if ($value === null || $value === '') {
$cleaned_data[$key] = null; // or empty string, depending on requirement
continue;
}
// Data type conversion and validation
if (is_string($value)) {
$cleaned_data[$key] = trim($value); // Remove leading/trailing whitespace
$cleaned_data[$key] = htmlspecialchars($cleaned_data[$key], ENT_QUOTES, 'UTF-8'); //Escape HTML entities for security
} elseif (is_int($value)) {
$cleaned_data[$key] = (int)$value; // Ensure integer type
} elseif (is_float($value)) {
$cleaned_data[$key] = (float)$value; // Ensure float type
} elseif (is_array($value)) {
//Handle arrays - flatten or process recursively as needed
$cleaned_array = [];
foreach($value as $item){
if(is_string($item)){
$cleaned_array[] = trim($item);
}
//Add other type handling if needed
}
$cleaned_data[$key] = $cleaned_array;
} else {
// Unknown data type - log or handle as needed
error_log("Unknown data type for key: " . $key . ". Value: " . $value);
$cleaned_data[$key] = null; // or a default value
}
}
return $cleaned_data;
}
//Example Usage:
/*
$metadata = [
'name' => ' John Doe ',
'email' => '',
'age' => '30',
'tags' => ['tag1', 'tag2'],
'description' => '<div>Some HTML</div>',
'active' => true,
'value' => 123.45,
'null_value' => null
];
$cleanedMetadata = cleanMetadata($metadata);
print_r($cleanedMetadata);
*/
?>
Add your comment