Home >Backend Development >PHP Tutorial >javascript - php嵌入html script标签内的问题

javascript - php嵌入html script标签内的问题

WBOY
WBOYOriginal
2016-06-06 20:25:562511browse

把php嵌入script标签里面,如果有空行的话就会解析错误。有什么解决方案?
\n document.getElementById('content').innerHTML = marked("");

回复内容:

把php嵌入script标签里面,如果有空行的话就会解析错误。有什么解决方案?
\n document.getElementById('content').innerHTML = marked("");

好像楼上两位 @b9132 @kevins1022 没有理解楼主的问题所在.

楼主的问题是 $data 变量中有很多行, 即有换行符, 然后如果直接输出的话, 会在JS的代码块中出现换行,
然后会产生JS错误.
类似于这样:

<code><script type="text/javascript">
    function marked(v){
        return v;
    }
    document.getElementById('content').innerHTML = marked("hello
world
asldkfjalsdjkf");
</script></code>

所以比较简单的做法是, 把 \r\n 手工进行转义.

完整测试代码:

<code class="html"><?php $data = "hello
world
asldkfjalsdjkf";

$data = str_replace(array("\r", "\n"), array("\\r", "\\n"), $data);


?>


    <meta charset="UTF-8">
    <title>Test</title>


<pre id="content">

执行效果:

javascript - php嵌入html script标签内的问题

最终浏览器得到的HTML代码为:

<code class="html">


    <meta charset="UTF-8">
    <title>Test</title>


<pre id="content">

没有开启php短标签的情况下

<code>echo "<script>document.getElementById('content').innerHTML = marked(".<?php echo $data ?>.")</script>";</code>

开启php短标签的情况

<code>echo "<script>document.getElementById('content').innerHTML = marked(".<? =$data ?>.")</script>";</code>

php短标签开启方法:
只需修改php的配置文件:php.ini ,将short_open_tag = off 改成 short_open_tag = on,然后保存,重启apache就可以了。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn