// Vérifier si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
$nomFichier = strtr($nomFichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nomFichier = preg_replace('/([^.a-z0-9]+)/i', '-', $nomFichier);
// Copié le fichier uploader a l'endroit voulu.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
J'avais essayer de mettre la fonction avant et après le move_uploaded_file mais aucune des deux n'a fonctionné.
function substr_unicode($str, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
// Vérifier si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
$nomFichier = strtr($nomFichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nomFichier = preg_replace('/([^.a-z0-9]+)/i', '-', $nomFichier);
if(substr_unicode($str, $s, $l = null)){
$str = "Büyük";
$s = 0; // start from "0" (nth) char
$l = 3; // get "3" chars
echo substr($str, $s, $l) ."\n"; // Bü
echo mb_substr($str, $s, $l) ."\n"; // Bü
echo substr_unicode($str, $s, $l); // Büy
// Copié le fichier uploader a l'endroit voulu.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
Merci d'avance
// déclaration d'une fonction
function test($var1, $var2 = 2){
// $var1 doit être renseignée
// $var2 si elle n'est pas renseignée sera créée avec la valeur 2.
return $var1 * $var2;
}
$maVariable = 1;
$maVariable2 = 80;
// utilisation de la fonction
$retour = test(5); // correspond en fait à test(5,2)
$retour = test($maVariable, $maVariable2);
Mais surtout c'est bien joli ton copier/coller... Mais il agit sur quoi ?function substr_unicode($nomFichier, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $nomFichier, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
$nomFichier = "Büyük";
$s = 0;
$l = 3;
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
Je ne vois pas comment récupérer l'extension du fichier.
function getExt($filename, $encoding = 'UTF-8'){
mb_internal_encoding($encoding);
mb_regex_encoding($encoding);
$tmp = mb_split('.',$filename);
if( size($tmp) > 1 ){
return '.' . $tmp[size($tmp) - 1];
}
return '';
}
echo getExt('nomFichier.ext'); // .ext
echo getExt('image.jpeg'); // .jpeg
echo getExt('objet.class.php'); // .php
echo getExt('test'); // retournera une chaîne vide<?PHP
/*
fonction transforme ($chemin_fic, $nombre)
paramètres : un chemin de fichier, le nombre de caractères à garder
retourne un tableau :
$acceptable : booléen : extension acceptée
$nom_pur :le nom sans accents et réduit à $nombre caractères
$extension l'extension avec son point
$nom_final :le nom nouveau complet
Pour bien faire il faudrait vérifier que ce nom n'existe pas déjà...
*/
function transforme_nom($chemin_fic, $nombre)
{
$accents = array("é","è","ç","à","ù", "!"); //à compléter avec tous les caractères à remplacer
$remplacants = array("e","e","c","a","u","_"); //à compléter sinon les caractères sans équivalent sont supprimés
//en premier, car on signale un problème avec basenom si le nom compore des accents
$nom_fic = str_replace ($accents, $remplacants, $chemin_fic);
$acceptables = array(".jpg",".jpeg", ".JPG");// à compléter maj/min
$nom_fic = basename ($nom_fic);// le nom du fichier sans son chemin avec son extension
$pos_point = strrpos($nom_fic, "."); // position du premier point à partir de la fin du nom de fichiet
$extension = substr($nom_fic, $pos_point);
$acceptable = in_array($extension, $acceptables); // test de l'extension
$nom_pur = "";
$nom_final = "";
if ($acceptable === true)
{
$nom_pur = basename($nom_fic, $extension);//le nom sans l'extension sera réduit par substr ci-dessous
$nom_final =substr($nom_pur, 0, $nombre).strtolower($extension);
}
return array ($acceptable, $nom_pur, $extension, $nom_final);
}
$nomfic = "vd/tot!oéèuù.gif";
$resultat =transforme_nom($nomfic, 15);
if ($resultat[0] === true)
{
$nouveau_nom = $resultat[3];
print "$nouveau_nom";
}
?>
C'était et c'est enregistré en UTF-8 (machine Fedora 17)Je suis pas certain que cela fonctionne avec de l'utf8 par contre ta fonction sirakawa, tu pourrais nous confirmer ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
et ça fonctionne ici// Fonction de renommage : si fichier.ext existe, renomme en fichier1.ext ; si fichier1.ext existe, renomme en fichier2.ext etc..
function Rename_fich($adresse_fichier)
{
//Si le fichier existe et est un fichier valide
if (is_file($adresse_fichier))
{
// Informations sur le fichier
$adresse_fichier = $DESTINATION_FOLDER
$info = pathinfo($adresse_fichier);
$extension = $info['extension'];
$filename = $info['filename'];
$dossier = $info['dirname'];
// Cherche dans le nom de fichier des caractères numériques en fin de nom et si oui incrémente ce nombre grâce à la fonction anonyme create_function
$nomFichier = preg_replace_callback('#([0-9]+$)#', create_function('$matches','return $matches[1]+1;'), $nomFichier, '1', $count);
// Si des caractères numériques sont trouvés et incrémentés (le paramètre $count employé dans preg_replace_callback indique le nombre de remplacements), $filename prend sa nouvelle valeur, sinon l'ancienne concaténée à 1
$nomFichier = !empty($count)? $nomFichier : $nomFichier.'1';
// Reconstruction du nom de fichier avec son extension (si elle existe)
$nomFichier = !empty($extension) ? $nomFichier.'.'.$extension : $nomFichier;
// Reconstruction de l'adresse du fichier
$adresse = $dossier.'/'.$nomFichier;
// Appel de la fonction pour re vérification avec le nouveau nom du fichier
return Rename_fich($adresse);
}
// Retourne le chemin complet du fichier
else return $adresse_fichier;
}
et au niveau de la fonction d'upload:
$nomFichier = strtr($nomFichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nomFichier = preg_replace('/([^.a-z0-9]+)/i', '-', $nomFichier);
$nomFichier =substr($nomFichier, 0, 15).strtolower($extension);
$adresse_fichier = Rename_fich($adresse_fichier);
$nomFichier =substr($nomFichier, 0, 20).strtolower($extension);
//Copié le fichier uploader a l'endroit voulu.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
Quand j'essai d'uploader un fichier sa me renvoi une erreur à cette ligne: $info = pathinfo($adresse_fichier);