从PHP变量中转义换行符(endline)以用于Javascript用法

时间:2012-12-04 18:29:36

标签: php javascript

继承我的代码:

<td onclick="openFile('<?php echo htmlentities ($row['name'])?>','
                      <?php echo htmlentities ($row['content'])?>')">
    <a href="#nf" data-toggle="tab"><?php echo $row['name']?></a></td>

因为$ row ['content']中有一个endline char:

  

openFile('哇','哇哇哇

     

哇');

当浏览器无法在同一行中找到结尾qoutes时,它会抛出

错误(SyntaxError:未终止的字符串文字 [打破此错误])。

对此有何解决方案?

2 个答案:

答案 0 :(得分:6)

您可以通过替换它来删除它,

str_replace("\n","",$row['name']);

如果您需要将换行符放在JS字符串中,则可以双击它,

str_replace("\n","\\n",$row['name']);

答案 1 :(得分:0)

之前我有同样的问题。 PHP中的 json_encode 和JS中的 JSON.parse()帮助我解决了这个问题。在您的情况下,我会使用此代码:

<td onclick="openFile('<?php echo htmlentities ($row['name'])?>','
                  <?php echo json_encode($row['content'])?>')">
<a href="#nf" data-toggle="tab"><?php echo $row['name']?></a></td>

然后在你的openFile()函数中,我将使用JSON.parse()解析 content 参数,如下所示:

function openFile(name, content){
     content = JSON.parse(content);

     ....
     // your codes here

}