La variable $a
ci-dessous ne semble pas analyser correctement si j'essaie de la déclarer en utilisant un hérédoc. Cependant, cela fonctionne quand je le définis avec la méthode de déclaration simple =
. Je voudrais pouvoir le définir comme hérédoc, car beaucoup de code HTML doit être appelé en même temps, et dans cet exemple, je viens de le simplifier à des fins de démonstration.
$a = "<a href = \'http://www.google.com\'>Google</a>";
echo "
<div id = \"test\"
ondblclick = \"document.getElementById('test').innerHTML = '$a';\">
Change Event
</div>
";
// when the user clicks the text "Change Event",
// it should turn into whatever $a is, in this case a link to Google
Le code précédent fonctionne, cependant, lorsque j'essaie de le convertir en hérédoc, quelque chose n'est pas analysé correctement.
J'ai essayé d'utiliser quatre types de styles de devis, ", \", 'et \'
\ 'est le style de citation requis par l'emplacement de la variable dans le code, dans JavaScript, car les trois autres styles ont déjà été utilisés, et c'est la citation qui fonctionne (évidemment) lorsque je déclare une variable dans un simple ({ {X0}}).
Lorsque j'utilise "ou \" , le code donne:
Lorsque j'utilise 'ou \' , le code donne:
Dans les deux cas, la fonctionnalité ondblclick
ne fonctionne pas non plus. Je ne sais pas ce qui ne va pas et pourquoi heredoc n'analyse pas la façon dont il semble qu'il devrait.
Voici une de mes tentatives pour faire l'hérédoc; la seule différence entre mes tentatives sont les styles de devis autour du lien.
$a = <<<EOT
<a href = \'http://www.google.com\'>Google</a>
EOT;
// as stated above, I have tried ", \", ', and \'
3 réponses
Cela fonctionne pour moi:
<?php
$a = <<<EOT
<a href="http://www.google.com">Google</a>
EOT;
echo "
<div id=\"test\"
ondblclick=\"document.getElementById('test').innerHTML = '$a';\">
Change Event
</div>
";
Il en va de même:
<?php
$a = <<<EOT
<a href="http://www.google.com">Google</a>
EOT;
$b = <<<EOT
<div id="test" ondblclick="document.getElementById('test').innerHTML = '$a';">Change Event</div>
EOT;
echo $b;
Voir ce codepad pour la sortie.
N'échappez pas à vos citations. Faites quelque chose comme ça:
<?php
$foo = "teststring";
$bar = <<<EOT
<a href="http://www.google.com/?q={$foo}">Click here</a>
EOT;
?>
En PHP, vous n'avez pas besoin d'utiliser echo pour sortir une chaîne.
Fermez simplement la balise PHP et écrivez ce que vous voulez TEL QUEL, sans aucune restriction de syntaxe (tant que vous suivez la norme THML bien sûr), en ouvrant PHP uniquement en cas de besoin.
?>
<div id = "test"
ondblclick = "document.getElementById('test').innerHTML = '<?=$a>';">
Change Event
</div>
Puis inspectez la source HTML résultante si elle correspond à vos attentes.
C'est tout.
Si vous rencontrez toujours des problèmes avec votre code - eh bien, ce n'est plus la faute de PHP. Corrigez votre syntaxe dhtml.
(remarquez la surbrillance des couleurs qui devient possible lorsque vous écrivez (D) HTML tel quel, sans échos PHP laids)
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.