Comment ecrire un double cote " " [Résolu/Fermé]

Signaler
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013
-
Messages postés
5578
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 juin 2021
-
salut tt le monde j ai un tableau @array et je veux affecter la chaine de caractère entre parenthèse (user "aaa") a $array[12]
voila mon code $array[12]=" user "aaa" ";
Rien ne change pour $array[12] et c'est a cause des deux cote (" ") je pense pck quand je les enleve de tel manière $array[12]=" user aaa "; le changement est effectué!!comment peut on écrire les deux cotes sans qu ils soient considerés des delimiteurs de chaine de caractère??merci pour votre aide

3 réponses

Messages postés
5578
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 juin 2021
937
Salut helmii,

1.

Tu peux faire comme suggéré par les réponses précédentes, en échappant les guillemets ("double quotes") contenus à l'intérieur de tes guillemets.

$array[12]=" user \"aaa\" "; 

2.

une autre façon de faire, si ton contenu n'a pas à être interpolé et ne comprend pas d'apostrophes, est simplement d'utiliser l'apostrophe comme délimiteur de chaîne :

$array[12]=' user "aaa" '; 

3.

Si tu dois interpoler le contenu, et que tu as la flemme d'échapper les guillemets, tu peux utiliser qq :

$array[12]= qq( user "$username" ); 

(note : "qq" est pour "double quotes", il y a aussi "q" pour "single quote" qui est équivalent à l'apostrophe, pour ne pas interpoler)

4.

enfin, il y a aussi le heredoc, si tu dois mettre du texte avec des guillements, des apostrophes, des retours à la ligne,...

En non interpolé avec des apostrophes autour du marqueur identifiant la fin du bloc :
$array[12] = <<'EOT';
j ai un tableau @array et je veux affecter la chaine de caractère entre parenthèse (user "aaa") a $array[12]
voila mon code $array[12]=" user "aaa" ";
Rien ne change pour $array[12] et c'est
EOT
;

en version interpolée, avec des guillemets à la place, ou sans rien :
$array[12] = <<EOT;
Ce user s'appelle $prenom, $nom.
Il a $age ans.
Il habite $adresse.
EOT
;

EOT est un exemple, tu peux mettre ce que tu veux. Par convention on met cela en majuscules. Le ; tout seul après le bloc est facultatif, j'aime bien le mettre pour éviter le warning pouvant théoriquement s'afficher comme signalé en fin de cette section de Perldoc.

Sources pour approfondir :

https://perldoc.perl.org/perlop#Quote-and-Quote-like-Operators
https://perldoc.perl.org/perlop#Quote-Like-Operators


Dal
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
2995
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
5 mai 2019
318
Tu dois utiliser le back slash
Ex :
  echo " \" "
 "

Le \ permet de signaler au shell que le caractère n'est pas un meta-caractère

Bref le shell va afficher ton " comme n'importe quel caractère =)

L@pourax
Si vous ne réussissez pas du premier coup, appelez ça version 1.0
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Salut,

il faut 'déspécialiser' ta double-quote en la faisant précéder d'un backslash (\), de cette manière : \"

A+ blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"