我有一个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>
答案 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需要进行一些未设计的解码(因此你需要编写解码算法)。