Page 1 sur 1

concaténation

Posté : 08 oct. 2010, 18:59
par achimimeas
Bonjour à Tous.
Je suis un débutant en php.
J'ai un problème de concaténation.
je veux écrire: modification de la page "chemin". Mon problème c'est de mettre les guillemets

Voilà ce que j'ai écrit et je n' arrive pas à avoir les guillemets.

<?php echo 'Modification de la page'.' '.$trc[nom_page];?>

Merci de m'aider

Re: concaténation

Posté : 08 oct. 2010, 19:11
par Cyrano
Salut,
on va tenter de simplifier au maximum.

Il peut être utilisé deux sortes de caractères pour encadrer des chaînes de caractères dans du code PHP : le guillemet «"» ou l'apostrophe «'». Dans certains cas particuliers, on peut aussi utiliser les accolades «{» et «}» mais oublions ces dernières pour le moment.

Le truc, c'est de partir d'une chaine de caractères complète telle qu'elle devrait apparaître :
'Modification de la page ma super page php
Ici, on sait que « ma super page php » sera en réalité une variable. On va commencer par le début : on met toute la chaine de base dans du code PHP et on va utiliser des guillemets :
echo "Modification de la page ma super page php";
Remplaçons maintenant le nom de la page par une variable : il faut donc, là où on veut l'insérer, commencer par fermer la chaine avec le même caractère d'encadrement, ici un guillemet et le rouvrir ensuite après la variable. Et on ajoutera les points de concaténation de chaque coté :
echo "Modification de la page ". $trc[nom_page] ."";
Comme notre chaine se termine par une paire de guillemets vides, on peut les supprimer :
echo "Modification de la page ". $trc[nom_page];
Si on avait utilisé des apostrophes, ce serait la même chose, mais il y a un piège : du texte peut en contenir aussi, ça génèrerait un conflit :
echo 'Modification d'écriture de la page '. $trc[nom_page];
Il faudrait donc «échapper l'apostrophe du texte :
echo 'Modification d\'écriture de la page '. $trc[nom_page];
Enfin, l'index du tableau est une chaine aussi, non une constante, ou alors elle aura été définie comme tel au préalable : donc on doit l'encadrer aussi :
echo 'Modification d\'écriture de la page '. $trc['nom_page'];
Pour ma part, je privilégie les guillemets autour du texte et les apostrophes pour les index de tableau :
echo "Modification d'écriture de la page ". $trc['nom_page'];

Est-ce que c'est plus clair comme ceci ?

Re: concaténation

Posté : 08 oct. 2010, 19:50
par achimime
C'est la variable nom_page que je voudrai mettre entre les guillemets.
J' ai essayé ce que vous m'avez donné et j'affiche toujours le message sans les guillemets.
c'est à dire j'ai mis: <?php echo "Modification de la page ". $trc['nom_page'];?>

Re: concaténation

Posté : 08 oct. 2010, 19:53
par damaskinos
Relis un peu la partie sur comment échapper une apostrophe dans le post à Cyrano et applique le à des guillemets.

Re: concaténation

Posté : 08 oct. 2010, 19:58
par Cyrano
Et si on veut pousser un peu, si c'est pour afficher dans du HTML, remplace ces guillemets de texte par des entités html : par exemple &laquo; pour « et &raquo; pour ». Et ça nous donne :
echo "Modification d'écriture de la page &laquo;". $trc['nom_page']; ."&raquo;"
Mais si tu préfères mettre de vrais guillemets, dans ce cas, il va y avoir conflit : si la chaine complète est entre guillemets, tu devras échapper ceux contenus dans le texte lui-même exactement de la même manière que ce que j'ai expliqué pour les apostrophes.

Re: concaténation

Posté : 08 oct. 2010, 20:13
par achimime
J"ai pas de guillemets dans le texte.
ce que je veux écrire c' est : modification de la page "chemin".
J' ai essayé les deux méthodes que vous proposez mais j'ai toujours pas les guillemets.
Excusez moi d'insister. Je comprend vos explications mais quand je les colle dans mes codes
j'ai l'affichage sans les guillemets
Merci

Re: concaténation

Posté : 08 oct. 2010, 20:16
par xTG
echo "Affichage d'un guillement : \" ";
8-|

Re: concaténation

Posté : 08 oct. 2010, 20:19
par Cyrano
J"ai pas de guillemets dans le texte.
ce que je veux écrire c' est : modification de la page "chemin".
J' ai essayé les deux méthodes que vous proposez mais j'ai toujours pas les guillemets.
Excusez moi d'insister. Je comprend vos explications mais quand je les colle dans mes codes
j'ai l'affichage sans les guillemets
Merci
Montre-nous donc ton code, on ne devinera pas sans ça :-k

Re: concaténation

Posté : 08 oct. 2010, 20:26
par achimime
j'ai écrit
<?php echo "Modification de la page ". \"$trc[nom_page] .\";?> et celà m'affiche une parse erreur

Re: concaténation

Posté : 08 oct. 2010, 20:37
par Cyrano
j'ai écrit
<?php echo "Modification de la page ". \"$trc[nom_page] .\";?> et celà m'affiche une parse erreur
Normal, tu as fais les choses à l'envers.

Dans ton code, tu dois avoir :
code php ." chaine de caractère ". code php
Ou, dans l'autre sens :
chaine de caractère ". code php ." chaine de caractère

Le point de concaténation doit se trouver du coté du PHP par rapport au caractère d'encadrement, ici le guillemet.
Et attention à ta fin de chaine : tu veux afficher un guillemet qui va donc être à classer en chaine de caractère, il devra donc non seulement être échappé mais également encadré de guillemets comme le début de la chaine ...

Essaye à nouveau, tu vas y arriver : quand tu y seras, tu en auras tellement bavé des ronds de chapeaux que tu n'oublieras plus jamais ça :)

Re: concaténation

Posté : 08 oct. 2010, 20:50
par achimime
Merci beaucoup. T'es un vrai un as surtout un pédagogue. Tu m'as poussé à chercher. Non seulement ça marche mais j'ai définitivement compris ce qu'il faut faire
Merci encore.

Re: concaténation

Posté : 08 oct. 2010, 21:48
par Cyrano
Excellent, tu peux marquer le sujet en Résolu (petite icône, une coche verte, en haut à droite de la réponse qui a résolu ton problème)

Re: concaténation

Posté : 08 oct. 2010, 22:16
par Ryle
Excellent, tu peux marquer le sujet en Résolu (petite icône, une coche verte, en haut à droite de la réponse qui a résolu ton problème)
Il n'était pas authentifié lors de son premier message, je l'ai fait pour lui ;)

Re: concaténation

Posté : 08 oct. 2010, 22:29
par Cyrano
Excellent, tu peux marquer le sujet en Résolu (petite icône, une coche verte, en haut à droite de la réponse qui a résolu ton problème)
Il n'était pas authentifié lors de son premier message, je l'ai fait pour lui ;)
Bien vu, ça doit être la vision de l'aigle, un aigle aux allures égyptiennes antiques qui, vu sa couleur, aurait un peu forcé sur le Curaçao, mais bon, un aigle quand même :langue: