2

未终止的字符串常量

你好我有一个php代码是:

$bodier .= "setInterval('updateClock(\"$date2\",\"clock$x\")',1000);";

我这样使用它:

<body onLoad="<?php echo trim($bodier) ; ?>">

它产生:

<body onLoad="setInterval('updateClock("2012-10-31 13:14:01","clock0")',1000);
setInterval('updateClock("2012-08-30 13:10:31","clock1")',1000);
setInterval('updateClock("2012-08-30 10:16:46","clock2")',1000);
setInterval('updateClock("2012-08-30 10:17:28","clock3")',1000);
setInterval('updateClock("2012-09-07 10:17:47","clock4")',1000);
setInterval('updateClock("2012-08-30 10:18:27","clock5")',1000);
setInterval('updateClock("2012-08-29 10:18:41","clock6")',1000);">

它产生一个错误:终止字符串常量

我究竟做错了什么

我还尝试将 psting simpley 复制为硬编码而不是 php echo 部分

4

5 回答 5

1

有效的 html 语法是

<body onLoad="setInterval('updateClock(\"2012-10-31 13:14:01\",\"clock0\")',1000);">

你看,什么都没有。

于 2012-08-27T11:44:59.653 回答
1

您在两种不同的含义中使用 "。您不应该在 onload 字符串定义中使用它们。尝试使用您的 setInterval 行定义一个函数,并在 onload 属性中加载函数名称。

(当然也可以转义双引号!)

于 2012-08-27T11:45:00.957 回答
1

通过将未转义的引号字符放在内容字符串中,您在这里犯了常见错误。看这个例子:

"foo"bar"com"

您可能会说该字符串foo"bar"com实际上是foo作为 next"关闭整个字符串。与您的代码相同。HTML 解析器将:"setInterval('updateClock("视为您的 onLoad 脚本。这是错误的。

编辑:某些字符需要对 HTML 进行特殊转义,这些字符称为entities. 因此,无论您输出要与 HTML 一起使用的内容,您都可能希望始终通过htmlspecialchars()函数传递它,以保持安全

于 2012-08-27T11:43:59.387 回答
0

You're mixing up " and ' on various occasions in your code.

try something like this (also includes usage of functions, instead of strings in the setInterval() function and separating JavaScript from HTML markup):

<script>
function clockTimer( time, clock ) {
  setInterval( function(){ updateClock( time, clock ) }, 1000 );
}

function onLoader() {
  clockTimer("2012-10-31 13:14:01","clock0");
  clockTimer("2012-08-30 13:10:31","clock1");
  clockTimer("2012-08-30 10:16:46","clock2");
  clockTimer("2012-08-30 10:17:28","clock3");
  clockTimer("2012-09-07 10:17:47","clock4");
  clockTimer("2012-08-30 10:18:27","clock5");
  clockTimer("2012-08-29 10:18:41","clock6");
}

window.onload = onLoader;
<script>

<body>
...
于 2012-08-27T11:46:46.373 回答
0

您在 php 代码中正确转义了",但您还需要确保它在浏览器解析的 HTML 中被转义!

使用&quot;.

这个话题可能有用。

于 2012-08-27T11:45:17.607 回答