在PHP变量中存储Javascript代码?

时间:2014-03-03 09:54:25

标签: javascript php

我想将JavaScript代码存储在PHP变量中,以便将其多次注入我的主代码中:

<?php

$PASSME = <<<PASSME
alert("hello world");
PASSME;

echo "<a onclick=$PASSME >Click here</a>";

?>

在谷歌浏览器中,我可以阅读此源代码:

<a onclick="alert("hello" world");>Click here</a>

所以我注意到了这一点:

"hello" world"应为"hello world"

我做错了什么?

NB:我实际上正在开展一个更复杂的项目。我试图做一个例子,以了解如何正确地做到这一点。

6 个答案:

答案 0 :(得分:1)

正如我评论你在双引号中使用双重引号,改为使用单引号:

<?php

$PASSME = <<<PASSME
alert('hello world');
PASSME;

echo "<a onclick=\"$PASSME\" >Click here</a>";

?>

这将产生正确的代码:

<a onclick="alert('hello world');">Click here</a>

当拥有大量代码时,只需将变量从php传递给js,即:

<?php

$PASSME = <<<PASSME
var message = 'hello world'
PASSME;
?>
<script>
<?= $PASSME; ?>
</script>
<?
echo "<a onclick=\"alert(message)\">Click here</a>";
?>

答案 1 :(得分:0)

问题是您的属性值包含空格字符,并且不使用引号字符分隔。

<?php
  $html_safe_passme = htmlspecialchars($PASSME, ENT_QUOTES);
?>
<a onclick="<?php echo $html_safe_passme; ?>">Click here</a>

答案 2 :(得分:0)

您需要将HTML属性值中的"转义为&quot;。您还需要使用双引号(不能对其进行编码)来界定属性值,因为它包含空格,如下所示:

(另外,我个人不会将PHP的<<<用于字符串)

$passme = "alert(&quot;hello world&quot;);";

echo "<a onclick=\"$passme\">click here</a>";

答案 3 :(得分:0)

尝试使用单引号:

alert('hello world');

答案 4 :(得分:0)

使用以下(您错过了变量周围的报价)

 <?php

$PASSME = <<<PASSME
alert("hello world");
PASSME;

echo "<a onclick='".$PASSME."' >Click here</a>";

?>

答案 5 :(得分:0)

<?php

$PASSME = "alert('hello&nbsp;world');";

echo "<a onclick=". $PASSME . " >Click here</a>";

?>

尝试添加&nbsp;以更改代码中的空间。完成!