Signes "<" et ">" dans une chaine de caractères PHP

[Résolu/Fermé]
Signaler
Messages postés
3
Date d'inscription
mardi 15 octobre 2013
Statut
Membre
Dernière intervention
16 octobre 2013
-
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
-
Problème supposé tout simple sur lequel je butte depuis plusieurs heures :

J'ai fait un code PHP de test qui est le suivant :


<?php
$a = '"Famille TOTO" <aaaa>'; // guillemet simple puis guillemet double au début
echo $a;



Cela n'affiche que la première partie : "Famille TOTO". Si j'enlève "aaaa", çà marche, mais dès que j'ajoute n'importe quoi entre les signes "<" et ">", la fin n'apparait plus !

Je n'ai rien trouvé dans les manuels PHP qui indiquerait que "<" ait une signifie spéciale dans les chaines de caractères.

J'ai essayé sur le serveur de test de mon PC (wampserver sous Windows 7) et sur mon hébergeur OVH : c'est pareil !

Une idée ?

Merci de votre aide.

4 réponses

Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
101
As-tu essayé la concaténation et en remplaçant les "<" et ">" par leur entité html ?



<?php
$a = '"Famille TOTO" ."<aaaa>" // guillemet simple puis guillemet double au début
echo $a;
?>
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
640
au lieu de < tu mets & lt (sans espace entre & et lt)
au lieu de > tu mets & gt (sans espace entre & et gt)

xD

(____(_bdKey____________()~
Pensez à voter pour des réponses.
Pensez à cliquer sur "Résolu" si votre problème est réglé.
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
Ne pas oublier le point virgule à la fin de l'identité html !!!
< = &lt;
> = &gt;
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
640
chez moi il marche sans :)

$a = '"Famille TOTO" & ltaaaa& gt';
toujours sans espace après le &

<?php
$a = "'Famille TOTO' <aaaa>";
echo htmlspecialchars($a);


?>
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
Et avec les points-virgules ?

$a = '"Famille TOTO" &lt;aaaa&gt;';
Messages postés
3
Date d'inscription
mardi 15 octobre 2013
Statut
Membre
Dernière intervention
16 octobre 2013

Bon sang, mais bien sûr !

J'avais déjà pensé à mettre "& lt;" dans mon expression, mais ce n'est pas possible car je veux utiliser $a comme argument d'une fonction mail().

Mais je n'avais pas fait attention que le résultat de mon echo allait se retrouver dans du code html et donc que les "<" allaient être interprétés par html, en l'occurrence ignorés avec leur contenu.

En résumé, $a contient bien ce qu'il est sensé contenir, mais son affichage par echo était faux.

Merci à tous !
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
dans ce cas, si tu veux afficher du texte contenant des balises html ou des chaînes de caractères pouvant être interprétées en tant que telles, tu le place entre les balises
<xmp> et </xmp>

Ces balises servent à afficher tout ce qui se trouve entre elles tel quel sans interprétation.
Messages postés
3
Date d'inscription
mardi 15 octobre 2013
Statut
Membre
Dernière intervention
16 octobre 2013

Merci. Je ne connaissais pas.
Attention avec cette balise xmp elle est déprécié depuis html 4.

http://www.w3.org/wiki/HTML/Elements/xmp
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
640
Bien vu Froder! +1
vaut mieux alors utiliser les balises
<pre> et </pre>
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
640
Bien vu Froder! +1

Vaut mieux utiliser alors les balises
<pre> et </pre>
Messages postés
1871
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
1 août 2021
640
Bien vu Froder! +1

Vaut mieux utiliser alors les balises
<pre> et </pre>