J'ai trouvé cette fonction qui teste si une chaîne est Windows nom de fichier et dossier convivial:Strip mauvais caractères de noms de fichiers de Windows
function is_valid_filename($name) {
$parts=preg_split("/(\/|".preg_quote("\\").")/",$name);
if (preg_match("/[a-z]:/i",$parts[0])) {
unset($parts[0]);
}
foreach ($parts as $part) {
print "part = '$part'<br>";
if (preg_match("/[".preg_quote("^|?*<\":>","/")."\a\b\c\e\x\v\s]/",$part)||preg_match("/^(PRN|CON|AUX|CLOCK$|NUL|COMd|LPTd)$/im",str_replace(".","\n",$part))) {
return false;
}
}
return true;
}
Ce que je préfère avoir est une fonction qui supprime toutes les mauvaises choses de la chaîne. J'ai essayé de remplacer preg_match avec preg_replace mais pas de cigare.
* (référence) * [MSDN: Nommer des fichiers, chemins et espaces de noms] (http://msdn.microsoft.com/en-us/library/ aa365247% 28VS.85% 29.aspx) – Gordon