J'ai ce code PHP:
function ShowFileExtension($filepath)
{
preg_match('/[^?]*/', $filepath, $matches);
$string = $matches[0];
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE);
if(count($pattern) > 1)
{
$filenamepart = $pattern[count($pattern)-1][0];
preg_match('/[^?]*/', $filenamepart, $matches);
return strtolower($matches[0]);
}
}
Si j'ai un fichier nommé my.zip
, cette fonction revient .zip
.
Je veux faire l'inverse, je veux que la fonction revienne my
sans l'extension.
Le fichier est juste une chaîne dans une variable.
Réponses:
Pas besoin de tout ça. Consultez pathinfo () , il vous donne tous les composants de votre chemin.
Exemple du manuel:
Sortie du code:
Et alternativement, vous ne pouvez obtenir que certaines pièces comme:
la source
basename
. Pas de dénomination.Comme alternative à
pathinfo()
, vous pouvez utiliserbasename()
- Renvoie le composant de nom de fichier du cheminExemple du manuel PHP
Vous devez cependant connaître l'extension pour la supprimer à l'avance.
Cependant, puisque votre question suggère que vous avez besoin d'obtenir l'extension et le nom de base, je voterais la réponse de Pekka comme la plus utile, car elle vous donnera toutes les informations que vous souhaitez sur le chemin et le fichier avec un seul natif fonction.
la source
basename
, maispathinfo
comme indiqué ailleurs sur la page.https://php.net/manual/en/function.pathinfo.php
Test fonctionnel simple: https://ideone.com/POhIDC
la source
basename
;-)PATHINFO_FILENAME
pasPATHINFO_EXTENSION
...filename
ne pas avoir d'extension alorsbasename
qu'il doit avoir des tendances sadiques ...Une autre approche consiste à utiliser des expressions régulières.
Cela supprime de la dernière période
.
jusqu'à la fin de la chaîne.la source
$fileName
qui pourrait faire fonctionner le moteur en temps exponentiel (ou pire). Et en supposant que nous ayons fini de disséquer les composants internes de ce moteur regex spécifique et que nous avons théoriquement prouvé qu'il était robuste contre toutes les valeurs$fileName
possibles, le code n'est toujours pas arbitrairement portable sur une autre plate-forme qui a une autre implémentation du moteur regex.Si l'extension n'est pas connue, utilisez cette solution
PHP MAN, fonction pathinfo
la source
pathinfo
. Cela aidera OP à améliorer laShowFileExtension
méthode et fournira une lecture supplémentaire à toute personne essayant de trouver cette réponse. Aussi une petite description ne s'égarerait pas ...@Gordon basename fonctionnera très bien si vous connaissez l'extension, sinon vous pouvez utiliser explode:
la source
pathinfo
, c'est pourquoi je n'ai donnébasename
qu'une alternative. Il n'est pas nécessaire de réinventerpathinfo
avec regex ouexplode
.end(explode(".", $file));
vous donne l'extension, pas le nom de fichier.Presque toutes les solutions ci-dessus ont le nom de fichier obtenu à partir de la variable $ path
L'extrait ci-dessous obtiendra le nom du fichier exécuté actuel sans extension
Explication
la source
Il n'est pas nécessaire d'écrire beaucoup de code. Même cela peut être fait par une seule ligne de code. Voir ici
Ci-dessous se trouve le code d'une ligne qui renvoie uniquement le nom de fichier et supprime le nom de l'extension:
Il imprimera
Source: Supprimer l'extension et renvoyer uniquement le nom de fichier en PHP
la source
@fire incase le nom de fichier utilise des points, vous pourriez obtenir la mauvaise sortie. J'utiliserais la méthode @Gordon mais j'obtiens aussi l'extension, donc la fonction de nom de base fonctionne avec toutes les extensions, comme ceci:
la source
dans mon cas, j'utilise ci-dessous. Je me fiche de son extension. : D je pense que cela vous aidera
la source
$extenion
Tu peux écrire ça
Ceux-ci renverront l'élément courant du tableau, s'ils ne sont pas utilisés auparavant.
la source
Court
la source
b.php
et que j'exécutea.php
avoirrequire('b.php')
. Ensuite, la sortie sera commentb
au lieu dea
Nom de fichier sans extension de fichier lorsque vous ne connaissez pas cette extension:
$basename = substr($filename, 0, strrpos($filename, "."));
la source
Si vous ne savez pas de quelle extension vous disposez, vous pouvez essayer ceci:
Travailler avec toutes les possibilités:
la source
Votre réponse est ci-dessous la solution parfaite pour cacher l'extension de fichier en php.
la source
Les solutions existantes échouent lorsqu'il y a plusieurs parties dans une extension. La fonction ci-dessous fonctionne pour plusieurs parties, un chemin complet ou simplement un nom de fichier:
la source
Cela ne renvoie que le nom de fichier sans extension sur 1 ligne:
la source