<?php
/**
* Maps URL list fields for staging environments with basic input validation.
*
* @param array $urlList An array of URL list entries. Each entry is an associative array.
* @param array $validationRules An array of validation rules. Each rule is an associative array.
* Example: ['field_name' => ['type' => 'string', 'required' => true, 'min_length' => 5]]
* @return array An array of validated URL list entries. Returns an empty array if input is invalid.
*/
function mapAndValidateUrls(array $urlList, array $validationRules): array
{
$validatedUrls = [];
foreach ($urlList as $urlEntry) {
$validatedEntry = [];
$isValid = true;
foreach ($validationRules as $fieldName => $rule) {
if (!isset($urlEntry[$fieldName])) {
// Required field missing
$isValid = false;
break;
}
$value = trim($urlEntry[$fieldName]); //Remove whitespace
//Type validation
if (isset($rule['type'])) {
switch ($rule['type']) {
case 'string':
if (!is_string($value)) {
$isValid = false;
break;
}
break;
case 'integer':
if (!is_int($value)) {
$isValid = false;
break;
}
break;
case 'float':
if (!is_float($value)) {
$isValid = false;
break;
}
break;
default:
// Ignore unknown types
break;
}
}
//Required validation
if (isset($rule['required']) && $rule['required'] && empty($value)) {
$isValid = false;
break;
}
//Min length validation
if (isset($rule['min_length']) && strlen($value) < $rule['min_length']) {
$isValid = false;
break;
}
//Other rules can be added here (e.g. email validation, regex)
}
if ($isValid) {
$validatedEntry = $urlEntry; // Copy the original entry
$validatedUrls[] = $validatedEntry;
}
}
return $validatedUrls;
}
//Example Usage:
/*
$urlList = [
['url_id' => 1, 'url' => 'https://example.com', 'description' => 'Test URL'],
['url_id' => 2, 'url' => ' ', 'description' => 'Test URL'], //Empty string
['url_id' => 3, 'url' => '123', 'description' => 'Test URL'], // Integer
['url_id' => 4, 'url' => 'abc123def', 'description' => 'Test URL'], //String
];
$validationRules = [
'url_id' => ['type' => 'integer', 'required' => true],
'url' => ['type' => 'string', 'required' => true, 'min_length' => 5],
'description' => ['type' => 'string']
];
$validatedUrls = mapAndValidateUrls($urlList, $validationRules);
print_r($validatedUrls);
*/
?>
Add your comment