concaténation

achimimeas
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 18:59

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

Mammouth du PHP | 19672 Messages

08 oct. 2010, 19:11

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

08 oct. 2010, 19:50

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'];?>

Eléphant du PHP | 288 Messages

08 oct. 2010, 19:53

Relis un peu la partie sur comment échapper une apostrophe dans le post à Cyrano et applique le à des guillemets.

Mammouth du PHP | 19672 Messages

08 oct. 2010, 19:58

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

08 oct. 2010, 20:13

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

ViPHP
xTG
ViPHP | 7331 Messages

08 oct. 2010, 20:16

echo "Affichage d'un guillement : \" ";
8-|

Mammouth du PHP | 19672 Messages

08 oct. 2010, 20:19

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

08 oct. 2010, 20:26

j'ai écrit
<?php echo "Modification de la page ". \"$trc[nom_page] .\";?> et celà m'affiche une parse erreur

Mammouth du PHP | 19672 Messages

08 oct. 2010, 20:37

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 :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

08 oct. 2010, 20:50

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.

Mammouth du PHP | 19672 Messages

08 oct. 2010, 21:48

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)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

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

08 oct. 2010, 22:16

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 19672 Messages

08 oct. 2010, 22:29

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:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: