我想将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:我实际上正在开展一个更复杂的项目。我试图做一个例子,以了解如何正确地做到这一点。
答案 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属性值中的"
转义为"
。您还需要使用双引号(不能对其进行编码)来界定属性值,因为它包含空格,如下所示:
(另外,我个人不会将PHP的<<<
用于字符串)
$passme = "alert("hello world");";
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 world');";
echo "<a onclick=". $PASSME . " >Click here</a>";
?>
尝试添加
以更改代码中的空间。完成!