1. <?php
  2. /**
  3. * Decodes a list of directories, handling various input formats and compatibility.
  4. *
  5. * @param string $input The input string containing directory paths. Can be a single path,
  6. * a comma-separated list, or a newline-separated list.
  7. * @return array An array of decoded directory paths. Returns an empty array on error.
  8. */
  9. function decodeDirectories(string $input): array
  10. {
  11. $directories = [];
  12. if (empty($input)) {
  13. return $directories; // Return empty array for empty input
  14. }
  15. // Handle comma-separated input
  16. if (strpos($input, ',') !== false) {
  17. $directoryList = explode(',', $input);
  18. }
  19. // Handle newline-separated input
  20. elseif (strpos($input, "\n") !== false) {
  21. $directoryList = explode("\n", $input);
  22. }
  23. // Handle single path
  24. else {
  25. $directoryList = [$input];
  26. }
  27. foreach ($directoryList as $directory) {
  28. $directory = trim($directory); // Remove leading/trailing whitespace
  29. // Basic validation - ensure it's not empty after trimming
  30. if (!empty($directory)) {
  31. $directories[] = $directory;
  32. }
  33. }
  34. return $directories;
  35. }
  36. //Example Usage (for testing)
  37. /*
  38. $input1 = "/path/to/dir1,/path/to/dir2";
  39. $result1 = decodeDirectories($input1);
  40. print_r($result1);
  41. $input2 = "dir1\ndir2\ndir3";
  42. $result2 = decodeDirectories($input2);
  43. print_r($result2);
  44. $input3 = "/path/to/dir";
  45. $result3 = decodeDirectories($input3);
  46. print_r($result3);
  47. $input4 = "";
  48. $result4 = decodeDirectories($input4);
  49. print_r($result4);
  50. $input5 = " /path/to/dir , /another/dir ";
  51. $result5 = decodeDirectories($input5);
  52. print_r($result5);
  53. */
  54. ?>

Add your comment