在php中单引号语法打印

时间:2013-05-02 17:06:47

标签: php html

以下输出

href="javascript:showBed(" a114:1')'

当我想要表格时

href="javascript:showBed('A114:1')"

为了让javascript工作。我看了this site,但是没有把它弄下去,所以我放弃了。也许你可以给我一个暗示如何使用正确的语法?

  echo("<a href='javascript:showBed('" . $row['Bed'] ."')' target='main' class='larmlink'>link</a>");

谢谢=)

8 个答案:

答案 0 :(得分:1)

如果要将变量数据输出到JavaScript,最好使用json_encode(),以便自动转义所有特殊字符。 htmlspecialchars()将转义在HTML属性值中使用的任何值。

echo '<a href="',
  htmlspecialchars('javascript:showBed(' .  json_encode($row['Bed']) .   ')'),
  '" target="main" class="larmlink">link</a>';

请注意,我对PHP字符串文字使用单引号,以便PHP不必在我的字符串中搜索要替换的变量。你不必这样做,但我推荐它。

答案 1 :(得分:1)

您的输出不是它输出的内容,但它如何解释它(提示:不要查看已解析的DOM树,查看)。

echo("<a href='javascript:showBed('" . $row['Bed'] ."')' ...

==&GT;

echo("<a href=\"javascript:showBed('" . $row['Bed'] ."')\" ...

答案 2 :(得分:1)

你真的应该在HTML元素属性周围使用更标准的双引号。因此,最好在PHP中使用单引号。我建议这样做:

echo('<a href="javascript:showBed(\'' . $row['Bed'] .'\')" target="main" class="larmlink">link</a>');

答案 3 :(得分:1)

要打印双引号字符,您可以通过执行\"

来转义它
echo("<a href=\"javascript:showBed('" . $row['bed'] ."')\" target='main' class='larmlink'>link</a>");

Live demo

答案 4 :(得分:0)

使用heredoc syntax通常会使带有混合引号的代码更容易理解:

echo <<<EOD
    <a href="javascript:showBed('$row[Bed]')" target="main" class="larmlink">link</a>
EOD;

正如其他人提到的,如果$row['Bed']的值可能包含单引号或双引号,则必须使用addslashes将其转义。

答案 5 :(得分:0)

我喜欢使用sprintf(或printf,但sprintf更容易重构)这样的长字符串,因此很容易看到模板:

echo sprintf("<a href='javascript:showBed(\"%s\")' target='main' class='larmlink'>link</a>", $row['Bed']);

我还考虑在$row['Bed']变量上使用addslashes,以防其中包含引号。

答案 6 :(得分:0)

您可以使用heredoc语法来避免任何事情:

echo <<<LOD
<a href="javascript:showBed('{$row['Bed']}')" target="main" class="larmlink">link</a>
LOD;

请注意,如果您的变量包含一些引号,则必须先使用addslashes函数或str_replace。

另一个好的方法是系统地将所有html内容与php代码分开:

<a href="javascript:showBed('<?php
echo $row['Bed'];
?>')" target="main" class="larmlink">link</a>

答案 7 :(得分:-1)

试试这个:

echo("<a href='javascript:showBed(\"" . $row['Bed'] ."\")' target='main' class='larmlink'>link</a>");