[Résolu (merci AB)!] Expression régulière

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu (merci AB)!] Expression régulière

par Stef » 11 déc. 2008, 16:09

Ho yeah, merci beaucoup ab (j'avais pas vu ta réponse (pas de notifications par mail...)), je prends bonne notes de tout ceci!! :D

par AB » 09 déc. 2008, 19:36

Et bien si tu apprends, mission remplie :)

Maintenant imaginons que tu veuilles faire l'inverse, c'est à dire trouver l'extension d'un fichier.
En utilisant la même fonction substr() tu peux faire :
$nom_fichier = 'monfichier.php5';

$extension_fichier = substr(strrchr($nom_fichier,'.'),1); 
echo 'extension fichier = '.$extension_fichier; 

On pourrait obtenir le même résultat en utilisant les fonctions des tableaux :
$nom_fichier = 'monfichier.php5';

$tab_fich = explode(".", $nom_fichier);
$extension = array_pop($tab_fich);
$fichier_sans_extension = implode('.',$tab_fich);

echo 'extension = '.$extension.'<br/>';
echo 'fichier sans extension = '.$fichier_sans_extension;

Ou encore toujours la même chose avec des expressions régulières puisque c'était le titre de ton post
$nom_fichier = 'monfichier.php5';

$fichier_sans_extension = preg_replace("#.[a-zA-Z0-9]{2,}$#",'',$nom_fichier);
echo 'fichier sans extension = '.$fichier_sans_extension;

echo '<br />';

preg_match("#[a-zA-Z0-9]{2,}$#",$nom_fichier,$array); 
if (isset($array[0])) echo 'extension fichier = '.$array[0];
Mais j'aurais plutôt tendance à déconseiller les expressions régulières pour des choses aussi simples car cela demande plus de ressources pour le serveur.
Je te conseille plutôt de comprendre les deux premières solutions qui seront plus instructives dans un premier temps.

par Stef » 09 déc. 2008, 10:02

hum ok! excellent! là tu m'as fait avancer, j'ai appris des trucs!

comment souvent lorsque je pose des questions sur ce forum...

par AB » 08 déc. 2008, 22:19

Tu peux tester directement le code ci-dessus dans une page php et tu verras que cela va te retourner 'to_tolklx.jpg'
J'ai pris volontairement un non de fichier bizarre incluant un point et une extension farfelue pour dire que ça fonctionne dans tous les cas.

Mais si tu fais
$nom_fichier = 'monfichier.php5';
$nom_fichier_sans_extension = substr($nom_fichier,0,strrpos($nom_fichier,'.')); 
echo $nom_fichier_sans_extension;
// affiche monfichier 
Pour mieux comprendre le fonctionnement il faut étudier séparément les fonctions strrpos() et substr();

L'avantage évident par rapport à la solution avec basename() c'est que tu peux trouver le nom du fichier sans extension, sans connaître celle-ci à l'avance :)

par Stef » 08 déc. 2008, 22:03

hello ab,

je comprends pas comment ça marche, mais je vais me documenter sur ce que tu dis, encore merci!

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par AB » 08 déc. 2008, 21:57

Et si tu ne connaissais pas à l'avance le nom de l'extension, tu pourrais faire
$nomfichier = "to_tolklx.jpg.yoyo"; 
echo substr($nomfichier,0,strrpos($nomfichier,'.'));
:wink:

par Stef » 08 déc. 2008, 17:16

Bingo! :D

C'est exactement ça, fa maaaaaaaaaaaarfe! (joie du débutant!)

Merci beaucoup AB!!

par AB » 08 déc. 2008, 17:06

Si tu connais le nom de l'extension tu pourrais utiliser basename() en spécifiant le suffixe.

[Résolu (merci AB)!] Expression régulière

par Stef » 08 déc. 2008, 16:55

Hi!

j'ai une variable, disons $filename, qui contient le nom d'un fichier (avec l'extension), du style "nom-du-fichier.html",
je voudrais changer la valeur de cette variable à la 1ère partie de son nom, c'est à dire supprimer le .html...
comment faut-il faire?

j'ai essayer de potasser de la doc mais je suis un peu perdu là!