把php嵌入script标签里面,如果有空行的话就会解析错误。有什么解决方案?
\n document.getElementById(‘content’).innerHTML = marked(“<?php =$data ?>”);
好像楼上两位 @b9132 @kevins1022 没有理解楼主的问题所在.
楼主的问题是
$data
变量中有很多行, 即有换行符, 然后如果直接输出的话, 会在JS的代码块中出现换行,
然后会产生JS错误.
类似于这样:
<script type="text/javascript">
function marked(v){
return v;
}
document.getElementById('content').innerHTML = marked("hello
world
asldkfjalsdjkf");
</script>
所以比较简单的做法是, 把
\r
和
\n
手工进行转义.
完整测试代码:
<?php
$data = "hello
world
asldkfjalsdjkf";
$data = str_replace(array("\r", "\n"), array("\\r", "\\n"), $data);
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<pre id="content"></pre>
<script type="text/javascript">
function marked(v){
return v;
}
document.getElementById('content').innerHTML = marked("<?php echo $data?>");
</script>
</body>
</html>
执行效果:
最终浏览器得到的HTML代码为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<pre id="content"></pre>
<script type="text/javascript">
function marked(v){
return v;
}
document.getElementById('content').innerHTML = marked("hello\r\nworld\r\nasldkfjalsdjkf");
</script>
</body>
</html>
没有开启php短标签的情况下
echo "<script>document.getElementById('content').innerHTML = marked(".<?php echo $data ?>.")</script>";
开启php短标签的情况
echo "<script>document.getElementById('content').innerHTML = marked(".<? =$data ?>.")</script>";
php短标签开启方法:
只需修改php的配置文件:php.ini ,将short_open_tag = off 改成 short_open_tag = on,然后保存,重启apache就可以了。