[RESOLU] Enlever l'extension d'un fichier dans une variable

Eléphant du PHP | 114 Messages

20 mars 2006, 19:50

Bonjour a tous,

Je cherche comment enlever l'extension d'un nom de fichier d'une variable :

ex :
 $var = "jeu.zip";
aprés traitement :
 $var = "jeu";
Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2006, 20:06

Bonjour,

Il y a probablement plus simple, mais la fonction strrpos() te permet de retrouver la dernière occurence d'un caractère. Il te suffit de donc de trouver le dernier point dans le nom du fichier et de faire un substr() pour récupérer la chaine jusqu'à cette position :)

ViPHP
fab
ViPHP | 2657 Messages

20 mars 2006, 20:06

<?php
$file_name = "jeu.zip";
$file_array = explode('.',$file_name);
$extension = count($file_array) - 1;
$new_file_name = substr($file_name,0,strlen($file_array[$extension]));
echo $new_file_name;
?>
a tester :)
explode()
count()
substr()
strlen()
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 114 Messages

20 mars 2006, 20:08

:D MErci beaucoup !!!

Eléphant du PHP | 114 Messages

20 mars 2006, 20:12

:cry: Ca marche pas...

Ca m'affiche les 3 premiers caractères de la variable et ca enleve tous le reste...

Car moi j'effectue ce traitement sur plusieurs enregistrement de longueur différent chacun...

Eléphant du PHP | 451 Messages

20 mars 2006, 20:27

:cry: Ca marche pas...

Ca m'affiche les 3 premiers caractères de la variable et ca enleve tous le reste...

Car moi j'effectue ce traitement sur plusieurs enregistrement de longueur différent chacun...
J'ai bricolé ça vite fait :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">

<html>
    <head>
        <title>Essais</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>

    <body>
<?php
reset($_POST);
while (list($key, $val) = each($_POST )) {
	echo "<BR>$key -> $val";
	$$key=$val;
}

//phpinfo();
if (isset($FICHIER)) {

$path_parts = pathinfo($FICHIER);

echo "<BR>".$path_parts['dirname'], "\n";
echo "<BR>".$path_parts['basename'], "\n";
echo "<BR>".$path_parts['extension'], "\n";

echo "<BR><BR>Ce qui t'intéresse : ".substr($path_parts['basename'],0,strlen($path_parts['basename'])-strlen($path_parts['extension'])-1);


} 

	echo "<FORM action=";
	echo $_SERVER["PHP_SELF"];
	echo " method="post">";
	echo "Fichier : <INPUT TYPE=TEXT NAME=FICHIER>";
	echo "</FORM>";


?>
    </body>
</html> 
Ca traite aussi un fichier qui est présenté avec son path.
Exemple : (/temp/toto.txt) ou le nom du fichier seul (toto.txt) dans les 2 cas ça devrait t'afficher toto.
pathinfo permet davoir les éléments dans un tableau, ensuite il suffit de prendre la partie de basename qui commence en position 0 et qui a une longueur égale à la longueur de basename - la longueur de l'extension et encore -1 pour le point. ;)
Modifié en dernier par jpaul le 20 mars 2006, 20:32, modifié 2 fois.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 114 Messages

20 mars 2006, 20:31

:D ok, merci pour tout, ca fait vraiment plaisir !

TGuillard
Invité n'ayant pas de compte PHPfrance

27 sept. 2012, 15:46

Bonjour,

La solution précédente était mieux une fois corrigée ça donne ça :
// Je met le nom de mon fichier dans une variable
$file_name = "nomDeFichier.jpg";
// J'explose dans un tableau à chaque fois que je rencontre un point
$file_array = explode ('.',$file_name);
// Je récupère l'indice dans le tableau de l'extension "jpg", soit le dernier élément
$extension = count ($file_array) - 1;
// Je découpe en enlevant l'extension cad (la taille de "jpg" + la taille du point d'où le -1)
$New = substr ($file_name,0,strlen($file_name) -strlen ($file_array[$extension])-1);
// J'affiche
echo $New; 

Eléphanteau du PHP | 35 Messages

27 sept. 2012, 15:54

Hello,

Pour récupérer ton nom de fichier sans l'extension, tu as la fonction pathinfo() qui te retourne un tableau avec les infos suivantes :
http://fr2.php.net/manual/en/function.pathinfo.php

L'index filename te retournant le nom du fichier sans l'extension.
$fileInfo = pathinfo($file);

$fileInfos['dirname']
$fileInfos['basename']
$fileInfos['extension']
$fileInfos['filename']

La paresse est mère du génie.

ViPHP
xTG
ViPHP | 7331 Messages

27 sept. 2012, 16:34

Déterrer un topic datant d'il y a 6 ans pour paraphraser des réponses existantes...
Vous avez pas honte ?
Allez plutôt répondre à des sujets récents non mais ! :twisted:

Eléphanteau du PHP | 35 Messages

27 sept. 2012, 16:38

Non j'ai pas honte,

je débute en aidage de personne sur forum :lol: J'ai pas fait gaffe à la date du topic.

Et je réponds aussi a des questions plus récentes !
La paresse est mère du génie.

passe par là
Invité n'ayant pas de compte PHPfrance

21 oct. 2013, 11:55

..et en plus ça sert encore pour ceux qui recherche l'info, alors merci !

to175175
Invité n'ayant pas de compte PHPfrance

31 oct. 2013, 23:09

Salut Moi aussi je réponds :D
et je demande en même temps :)

est ce que ça serait pas mieux ceci, si ça marche (?) :
<?php
echo str_replace('.php', '', $file);
echo str_replace('.html', '', $file);
echo str_replace('/', '', $file);
//etc...
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 nov. 2013, 11:32

Salut,

Non car trop limité et contraignant vue que tu doit indiquer l'extension.
Les solutions pathinfo et substr + strrpos sont les plus générique (et on oubli l'hérésie de l'explode :mrgreen: )

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 1 Messages

24 juil. 2014, 05:50

bonjour voila je voudriez avoirs la variable $fichierrel de $fichier mai sans le .jpg car le rel ne prend pas le .jpg
en vous remercier d'avance
<?php
	        		
	        		if ($dossier = opendir('core/img')) 
	        		{
	        			while (false !== $fichier = readdir($dossier)) 
	        			{
        					        				
	        				if ($fichier != '.' && $fichier != ".." ) 
	        				{
	        					echo '<li><a rel=" ' .$fichierrel. ' " href="core/page/'.$fichier.'.html"><img src="core/img/'.$fichier.' "></a></li>';
	        				}
		        		
	        			}

	        			closedir($dossier);
	        		}
	        	?>