2014-10-03 124 views
3

里面一个PHP脚本我有这样的:我可以在PHP内部的JavaScript中编写PHP吗?

echo <<<EOD 

<script type="text/javascript"> 
document.getElementById('my_element_id').innerHTML='Do stuff'; 
</script> 

EOD; 

我可以添加JavaScript的PHP内?用PHP代码替换“Do stuff”部分?如果是的话,我该怎么做?从PHP

<?php 
$anyphpvariable='foo'; 
echo <<<EOD 
    <script type="text/javascript"> 
     document.getElementById('my_element_id').innerHTML=$anyphpvariable; 

    </script> 
EOD; 
?> 

的东西都可以分配给JS和良好做法:

+1

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – Clive 2014-10-03 12:39:32

+2

为什么你不试试? – mpgn 2014-10-03 12:39:36

+1

是的,你可以做到这一点...并且在提问之前试着实现这个目标.. :) – DeDevelopers 2014-10-03 12:40:31

回答

3

首先,应该指出的是,这与javascript无关。你可以有任何形式的文本。你真正的问题是如何在heredoc中使用变量。

Heredoc定义为以下几点:

Nowdocs是单引号字符串什么here文档是双引号字符串。 nowdoc与heredoc类似,但在nowdoc内部没有解析。该构造非常适合嵌入PHP代码或其他大型文本块,而无需转义。

意思是说,因为这个工程:

$name = 'Foo'; 

echo "My name is $name"; // Using double quotes so variables get expanded 

那么这也可以工作:

$name = 'Foo'; 

echo <<<EOD 
    My name is <strong>$name</strong> 
EOD; // Using heredoc so variables get expanded 

本质上意味着是的,只要你把你的'Do stuff'内容到一个变量第一。请注意,如果您使用更高级的变量/数组,在粘贴到JS代码之前先执行$array = json_encode($array)是个好主意(想象一下,如果$nameThe Boss's Wife-那么如果您不编码它,则撇号会毁掉您的JS)。

DEMO

0

可以像做。 但不是JS可以分配任何东西给PHP。

+0

这会引发Reference错误,因为'foo'没有被定义为JavaScript变量。 – Quentin 2014-10-03 13:24:28

+0

环绕$ anyphpvariable,引用如... erHTML ='$ anyphpvariable'; – Fahad 2014-10-03 13:49:14

+0

提供'$ anyphpvariable'不包含新行或'''字符(在这个例子中它没有,但这不是一个可靠的解决方案)。 @ h2ooooooo的答案涵盖了这一点,并且好得多。 – Quentin 2014-10-03 13:50:58

-2

是的,但我只能得到你想要的东西,如果我有关的HTML代码之后放置。您可以呼应脚本...例如,这将工作:

<div id="footer">Hey</div> 
<?php 
$myVar = 'Hello'; 
echo "<SCRIPT> 
    document.getElementById('footer').innerHTML = '$myVar'; 
</SCRIPT>"; 
?> // You will see Hello in the footer 

,但是这是行不通的:

<?php 
$myVar = 'Hello'; 
echo "<SCRIPT> 
    document.getElementById('footer').innerHTML = '$myVar'; 
</SCRIPT>"; 
?> 
<div id="footer">Hey</div>// You will see Hey in the footer 

作为一个侧面说明,这些其他功能/方法也可以工作:

$myVar = 'Hi'; 
echo "<SCRIPT> 
    alert('$myVar'); 
</SCRIPT>";//Alerts 'Hi' 

$myVar = 'home.php'; 
echo "<SCRIPT> 
    location = '$myVar'; 
</SCRIPT>";//Takes you to home.php 

$myVar = 'hi'; 
echo "<SCRIPT> 
    myFunction('$myVar'); 
</SCRIPT>";//calls myFunction with argument $myVar 
相关问题