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:

Screenshot

Lorsque j'utilise 'ou \' , le code donne:

Screenshot2

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 \'
1
Dương Văn 24 oct. 2011 à 22:25

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.

0
middus 24 oct. 2011 à 18:30

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;

?>
1
Crontab 24 oct. 2011 à 18:30

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)

1
Your Common Sense 24 oct. 2011 à 19:34
7880063