Comment puis-je déterminer si un chemin de fichier est absolu? Doit travailler sur Windows et Linux.Comment déterminer si un chemin de fichier est absolu?
Répondre
Voici mon essai à le faire avec une seule fonction:
function isAbsolutePath($path) {
if (!is_string($path)) {
$mess = sprintf('String expected but was given %s', gettype($path));
throw new \InvalidArgumentException($mess);
}
if (!ctype_print($path)) {
$mess = 'Path can NOT have non-printable characters or be empty';
throw new \DomainException($mess);
}
// Optional wrapper(s).
$regExp = '%^(?<wrappers>(?:[[:print:]]{2,}://)*)';
// Optional root prefix.
$regExp .= '(?<root>(?:[[:alpha:]]:/|/)?)';
// Actual path.
$regExp .= '(?<path>(?:[[:print:]]*))$%';
$parts = [];
if (!preg_match($regExp, $path, $parts)) {
$mess = sprintf('Path is NOT valid, was given %s', $path);
throw new \DomainException($mess);
}
if ('' !== $parts['root']) {
return true;
}
return false;
}
J'ai pris cette d'un de mon projet, vous trouverez peut-être utile tout en travaillant avec des fichiers et des chemins: dragonrun1/file_path_normalizer
Vous ne voyez aucun problème avec ça. Va accepter. Merci! – mpen
Ceci est une solution au copypaste d'une réponse StackOverflow. Ce qui m'intéresserait le plus serait de savoir s'il existe actuellement une solution "gagnante" ou "de facto standard" qui a existé en dehors de StackOverflow, comme une bibliothèque qui peut être installée avec un compositeur ou quelque chose du genre. Existe-t-il une bibliothèque d'utilitaires de chemin "de facto standard"? –
Si vous regardez ma réponse ci-dessus, je donne un lien vers le projet que j'ai fait qui est également disponible via le compositeur. – Dragonaire
Voici ce que je suis venu avec:
function is_absolute_path($path) {
if($path === null || $path === '') throw new Exception("Empty path");
return $path[0] === DIRECTORY_SEPARATOR || preg_match('~\A[A-Z]:(?![^/\\\\])~i',$path) > 0;
}
Je pense que couvre tous les chemins de la racine possible pour Windows.
Il casse toujours pour les chemins qui ont [wrappers] (http://php.net/manual/en/wrappers.php). essayez 'zlib: // c:/dummy/path /' ou 'file: // c:/dummy/path' – Dragonaire
@Dragonaire [Node] (https://nodejs.org/api/path.html#path_path_isabsolute_path) retourne 'false' pour ces deux exemples aussi, ce qui me semble être la bonne réponse. Nous parlons de chemins * file * ici, pas d'URL. – mpen
Devinez que vous devez lire le lien d'emballage que je donne car ils n'ont rien à voir avec les URL en eux-mêmes. Vous pouvez les utiliser pour implémenter des choses comme ftp autour d'un flux mais vous avez ensuite file: // qui ne fait plus qu'un fichier local dans une ressource de flux au lieu d'une simple chaîne. Le fait que Node (JS) ne comprenne pas quelque chose qui est spécifique à PHP ne me surprend pas non plus;) – Dragonaire
- 1. Déterminer si un chemin est relatif ou absolu en Javascript
- 2. Déterminer le chemin absolu d'un fichier vb.net
- 3. Déterminer si un Url est absolu ou relatif de vb
- 4. Comment déterminer si un chemin est relatif ou absolu avec VB Scripting Host
- 5. Déterminer si un chemin est un chemin réseau VBA
- 6. Comment déterminer si un chemin est dans un répertoire? (POSIX)
- 7. Win32 API pour déterminer si un chemin est relatif ou absolu?
- 8. fichier chemin d'accès absolu
- 9. Comment vérifier si un chemin de fichier est valide
- 10. Kohana3: Chemin absolu vers un fichier
- 11. Comment déterminer si un chemin donné est un fichier ou un dossier?
- 12. Comment déterminer le chemin absolu pour un fichier spécifique à partir des actifs?
- 13. Déterminer si un fichier audio est VBR
- 14. Détecte si le chemin est absolu ou relatif
- 15. Comment déterminer si un chemin de répertoire était SUBST?
- 16. Comment obtenir un chemin de fichier absolu en Python
- 17. Sous Unix, comment créer un fichier dans un chemin absolu
- 18. Comment vérifier si un chemin est un chemin absolu ou un chemin relatif en mode multiplateforme avec Python?
- 19. Recherche du chemin absolu vers un répertoire si le chemin d'accès à la recherche est donné (dans un fichier batch)
- 20. Comment obtenir le chemin absolu d'un fichier lorsque donné un chemin relatif ou absolu et le chemin absolu, il est par rapport à
- 21. Servlet: Comment construire un chemin absolu
- 22. Comment obtenir un chemin absolu avec Vert.x?
- 23. Regex pour déterminer si un fichier est un fichier rar
- 24. Utilisation de chdir avec un chemin absolu
- 25. Chemin de fichier absolu vers l'URL relative
- 26. Téléchargement de fichier: obtention du chemin absolu
- 27. Comment déterminer si un fichier est en cours d'utilisation?
- 28. Comment déterminer si un fichier est chiffré avec EFS?
- 29. Comment déterminer si un fichier CSV est unicode ou non
- 30. Comment puis-je déterminer si un fichier est vide?
Vérifiez si elle a un colon ':'? Les chemins commençant par 'http: //', 'https: //', 'file: ///', 'C: /' sont tous absolus. Vous pouvez également voir si le chemin commence par '/' ou '~'. –
@LoganMurphy Unix n'a pas –
vous lisez ceci, peut-être utile? http://stackoverflow.com/questions/7392274/checking-for-relative-vs-absolute-paths-urls-in-php –