【问题标题】:Problems with quotes when writing javascript code in PHP在 PHP 中编写 javascript 代码时的引号问题
【发布时间】:2011-12-16 02:34:49
【问题描述】:

我想知道将 javascript 代码写入 PHP 变量的最佳方法是什么?

有时可能是相当长的 javascript 代码...有没有办法不转义所有引号?

<?php
echo '
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">

a_div.innerHTML = '<iframe style="width:100%;height:300px;" id="iframe_upload" src="index.php">';

</script>'

?>

【问题讨论】:

  • 您当前的代码不是给您一个unexpected T_STRING 错误吗?您需要将其部分更改为:a_div.innerHTML = \'&lt;iframe style="width:100%;height:300px;" id="iframe_upload" src="index.php"&gt;\';&lt;/script&gt;';(尽管这确实会转义引号)

标签: php javascript escaping quotes


【解决方案1】:

使用heredoc。例如:

$var = EOF<<<
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
a_div.innerHTML = '<iframe style="width:100%;height:300px;" id="iframe_upload" src="index.php">';
</script>
EOF;

EOF 可以是您想要的任意字符串,它只需紧跟在 &lt;&lt;&lt; 分隔符之后并匹配您要创建的字符串的两侧。

【讨论】:

  • 重要提示:PHP 中的heredoc 语法就像双引号一样,意味着变量被扩展并且反斜杠序列被解释。如果您希望按字面意思阅读文本,请改用 nowdoc 语法(即说 'EOF'&lt;&lt;&lt; 而不是 EOF&lt;&lt;&lt;。nowdoc 语法是在 PHP 5.3.0 中引入的
【解决方案2】:

答案很简单,不要混合使用 PHP 代码和 HTML/JavaScript,如果需要,请使用 ?&gt; 结束 PHP 块,然后在 HTML/JS 块之后使用 &lt;?php 再次打开它。

如果您需要在变量中使用它,您可以使用有点混乱的输出缓冲或使用Heredoc/Nowdoc 字符串:

<?php
$foo = <<<FOOBAR
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
    a_div.innerHTML = '<iframe style="width:100%;height:300px;" id="iframe_upload" src="index.php">';
</script>

FOOBAR;
?>

【讨论】:

    【解决方案3】:

    只要做:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript">
    
    a_div.innerHTML = '<iframe style="width:100%;height:300px;" id="iframe_upload" src="index.php">';
    
    </script>
    

    如果你在某个地方需要 php:

    a_div.innerHTML = '<iframe style="width:<?php echo $width; ?>;height:300px;" id="iframe_upload" src="index.php">';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-22
      • 2016-11-24
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多