Je recherche une petite fonction qui me permet de supprimer l'extension d'un nom de fichier.
J'ai trouvé de nombreux exemples en googlant, mais ils sont mauvais, car ils ne font que supprimer une partie de la chaîne avec "." . Ils utilisent dot pour limiteur et coupent simplement la corde.
Regardez ces scripts,
$from = preg_replace('/\.[^.]+$/','',$from);
ou
$from=substr($from, 0, (strlen ($from)) - (strlen (strrchr($filename,'.'))));
Lorsque nous ajoutons la chaîne comme ceci:
Ceci est un exemple de somestring
Il ne retournera que "This" ...
L'extension peut avoir 3 ou 4 caractères, nous devons donc vérifier si le point est en position 4 ou 5, puis le supprimer.
Comment ceci peut être fait?
Réponses:
Essaye celui-là:
Donc, cela correspond à un point suivi de trois ou quatre caractères qui ne sont ni un point ni un espace. La règle "3 ou 4" devrait probablement être assouplie, car il existe de nombreuses extensions de fichiers plus courtes ou plus longues.
la source
20120720.something.somethingelse.jpg
"$var"
{2,4}
place{3,4}
http://php.net/manual/en/function.pathinfo.php
la source
À partir du manuel, pathinfo :
Il n'est pas nécessaire que ce soit un chemin complet pour fonctionner correctement. Il sera tout aussi bien analysé
file.jpg
que/path/to/my/file.jpg
.la source
Utilisez PHP basename ()
(PHP 4, PHP 5)
var_dump(basename('test.php', '.php'));
Sorties: string (4) "test"
la source
C'est une solution assez simple et fonctionnera quelle que soit la longueur de l'extension ou le nombre de points ou d'autres caractères dans la chaîne.
Fondamentalement, cela recherche simplement la dernière occurrence de. puis utilise sous-chaîne pour récupérer tous les caractères jusqu'à ce point.
C'est similaire à l'un de vos exemples Google mais plus simple, plus rapide et plus facile que les expressions régulières et les autres exemples. Eh bien imo de toute façon. J'espère que ça aide quelqu'un.
la source
.htaccess
Vous pouvez utiliser ce que PHP a intégré pour vous aider ...
Cependant, si vous ne traitez qu'avec un nom de fichier (
.somefile.jpg
), vous obtiendrez ...Voir sur CodePad.org
Ou utilisez une regex ...
Voir sur CodePad.org
Si vous n'avez pas de chemin, mais juste un nom de fichier, cela fonctionnera et sera beaucoup plus laconique ...
Voir sur CodePad.org
Bien sûr, tous les deux ne recherchent que le dernier point (
.
).la source
.htaccess
Le code suivant fonctionne bien pour moi, et il est assez court. Il divise simplement le fichier en un tableau délimité par des points, supprime le dernier élément (qui est hypothétiquement l'extension) et reforme le tableau avec les points à nouveau.
la source
.htaccess
En fait, c'est absolument la bonne chose à faire. Allez-y et utilisez cela.
L'extension de fichier est tout après le dernier point, et il n'est pas nécessaire qu'une extension de fichier soit un nombre particulier de caractères. Même en parlant uniquement de Windows, il est déjà livré avec des extensions de fichier qui ne correspondent pas à 3-4 caractères, comme par exemple.
.manifest
.la source
.htaccess
et.htpasswd
dans les environnements apache.Utilisation recommandée:
pathinfo
avecPATHINFO_FILENAME
la source
Il y a plusieurs façons de le faire, mais je pense que l'un des moyens les plus rapides est le suivant
Une autre solution est la suivante. Je ne l'ai pas testé, mais il semble qu'il devrait fonctionner pendant plusieurs périodes dans un nom de fichier
Aussi:
Dans tous ceux-ci,
$name
contient le nom de fichier sans l'extensionla source
Production:
la source
$the_extension = substr($image_name, $last_dot_index, $last_dot_index);
Ajoutez cela pour obtenir l'extension du fichier.Comme d'autres le mentionnent, l'idée de limiter l'extension à un certain nombre de caractères est invalide. Partant de l'idée de array_pop, en pensant à une chaîne délimitée comme un tableau, cette fonction m'a été utile ...
Usage:
Les sorties:
En action:
http://sandbox.onlinephpfunctions.com/code/5d12a96ea548f696bd097e2986b22de7628314a0
la source
Vous pouvez définir la longueur du modèle d'expression régulière à l'aide de l'
{x,y}
opérateur.{3,4}
correspondrait si le motif précédent se produit 3 ou 4 fois.Mais je ne pense pas que vous en ayez vraiment besoin. Que ferez-vous avec un fichier nommé "This.is"?
la source
Utilisez ceci:
la source
Essayez d'utiliser celui-ci. cela supprimera sûrement l'extension de fichier.
la source
EDIT : L'approche la plus intelligente à mon humble avis, elle supprime le dernier point et le texte suivant d'un nom de fichier (aka l'extension):
À votre santé ;)
la source
end()
n'est pas censé fonctionner avec une fonction passée en paramètre. Il produit également un avis: seules les variables doivent être passées par référenceCela fonctionne lorsqu'il y a plusieurs parties dans une extension et est à la fois court et efficace:
la source