为什么file_get_contents不能使用html文件?

时间:2015-01-07 05:29:52

标签: javascript php

我有一个editor.php页面,它从不同的页面获取文件名并将其加载到codemirror编辑器中。我的问题是它只适用于.txt文件,但不适用于.html或.java文件。

<?php
    $login=$_COOKIE['login'];
    $directory = "userFiles/" . $login . "/";
    $filename = isset($_POST['files']) ? $_POST['files'] : false;
    $content = @file_get_contents($directory.$filename);
?>
<!DOCTYPE html>
<html>
<head>
<title>Editor</title>
<script src='codemirror/lib/codemirror.js'></script>
<script src='codemirror/mode/css/css.js'></script>
<script src='codemirror/mode/htmlmixed/htmlmixed.js'></script>
<link rel='stylesheet' href='codemirror/lib/codemirror.css'>
<style>
.CodeMirror {
    width: 100%;
    height: 85%;
}
</style>
</head>
<body>
<textarea id="code" name="code" autofocus></textarea>
<button class="button" id="save">Save</button>
<script>
var editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: 'text/html',
    tabMode: 'indent',
    lineNumbers: true,
    lineWrapping: true,
    autoCloseTags: true
});
editor.setValue("<?php echo $content;?>"+);
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

最可能的解释是这些文件有很多双引号(")。现在

会发生什么
"<?php echo $content;?>"

确实:你得到像"<a href="google.com">link</a>"这样的字符串。 JavaScript尝试解释这些,但无法理解,在所有JavaScript看到之后,突然停止了字符串:

"<a href="google.com">link</a>"
^        ^  ^
|        |  \-- something weird??!
|        \--end string
\--start string

我建议你查看生成页面的原始源代码来检查它。

<强>解决方案吗

你可以通过使用像JSON这样的运营商来解决这个问题。通过json_encode,您可以用一种格式对字符串进行编码,JavaScript可以找不到。你也可以使用不同的格式(你在哪里转义引号),但在这种情况下,JavaScript需要进行一些未设计的解码(因此你需要编写解码算法)。