Ajouter un Underscore entre deux variables

Eléphant du PHP | 256 Messages

15 juin 2010, 19:59

Bonjour,

Après deux heures de tests et de recherche infructueux, je me tourne vers vous. :mrgreen:

je voudrai renommer des fichiers sous la forme $a_$b, $a et $b correspondant à deux variables récupérées précédemment.

Or, je n'y arrive pas. J'ai cru comprendre que l'Underscore avait un usage particulier en Php...

En revanche, j'arrive à renommer mes fichiers $a>$b ou $a-$b, mais cette forme ne correspond pas à l'usage que j'attends.

Merci pour votre aide. :D

Cordialement,

Gaspard

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

15 juin 2010, 21:37

Normalement il te suffit de concatener tes chaines pour en obtenir une nouvelle qui correspondra au nom de ton fichier :
$nomFichier = $a . "_" . $b;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 256 Messages

15 juin 2010, 22:34

Bonsoir,

Merci, Ryle, pour ton aide.

Hélas, ça ne fonctionne pas. :cry:

Voici mon code pour renommer le fichier:

Code : Tout sélectionner

rename("large/$file", "large/$name . '_' . $i.jpg");

$name = 'mardi"
$i = [compteur]


J'ai inversé les guillemets et les quotes de la suggestion, car le code ne fonctionne pas entre quotes ('large/$file'...

Avec cette syntaxe ou un code voisin, mes fichiers renommés portent toujours les marques de la concaténation, comme si Php ne l'interprétait pas.

Merci. :mrgreen:

Gaspard

ViPHP
ViPHP | 5462 Messages

15 juin 2010, 22:43

tu fermes pas les guillemet c'est normal
le . concatène une chaine, si elle est pas fermer ca marche pas
$toto = 'tata';

echo $toto;
//tata

echo "$toto"; 
//tata

echo '$toto';
//$toto

echo $toto . 'tata';
//tatatata

Eléphant du PHP | 256 Messages

15 juin 2010, 23:18

Bonsoir

Merci, Stealth !

Mais, je suis un âne sur ce point, irrémédiablement fâché avec la concaténation. Pourtant, j'ai lu plusieurs dizaines, voire centaines, d'articles à ce sujet. D'ailleurs, ce point (sans mauvais jeu de mots) m'empêche souvent d'aller vite dans mes modestes développements.

Aussi, sans être désobligeant, j'ai lu et testé ton explication. Je pense l'avoir comprise, mais n'ai pas su la transposer.

Rename entre quotes ne fonctionne pas sur mes serveurs distant et local, au demeurant.

Cependant, j'ai fini par résoudre mon problème avec la "Méthode à Mimile", peu satisfaisante sur le plan intellectuel...

Code : Tout sélectionner

$sep = '_'; rename("large/$file", "large/$name$sep$i.jpg");
Voilà, voilà.

Sinon, je me sors en général de la concaténation avec .= qui me semble plus clair. :wink:

Je mets résolu au sujet pour ne pas encombrer le forum.

Merci à tous. :D

Cordialement,

Gaspard

ViPHP
ViPHP | 5462 Messages

15 juin 2010, 23:23

rename("large/$file", "large/$name" . '_'  . $i."jpg");

Eléphant du PHP | 256 Messages

15 juin 2010, 23:40

Bonsoir,

Merci Stealth, en effet, ça fonctionne...

En fait, j'ai du mal à me débarrasser de l'idée qu'il faut arrêter le traitement et le reprendre après la concaténation. Bon, je méditerai ton exemple, dont j'essaierai de m'imprégner.

Quoiqu'il en soit, je t'exprime encore ma gratitude.

Cordialement,

Gaspard

ViPHP
ViPHP | 5462 Messages

15 juin 2010, 23:43

Bonsoir,

Merci Stealth, en effet, ça fonctionne...

En fait, j'ai du mal à me débarrasser de l'idée qu'il faut arrêter le traitement et le reprendre après la concaténation. Bon, je méditerai ton exemple, dont j'essaierai de m'imprégner.

Quoiqu'il en soit, je t'exprime encore ma gratitude.

Cordialement,

Gaspard
c'est pareil dans la plus part des langages finalement le plus perturbant c'est que ca soit un . a la place d'un + , et que les variable sont interprété dans les double quotes :wink:

Camusensei
Invité n'ayant pas de compte PHPfrance

17 juin 2010, 18:52

Pour information la raison pour laquelle ton "$a_$b" ne donnait pas ce que tu voulais, c'est qu'il ne trouvait pas la variable $a_ car '_' est un caractère autorisé dans les noms de variables.