以下输出
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>");
谢谢=)
答案 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>");
答案 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>");