Я использую fwrite для добавления javascript во внешний скрипт. Для этого должна быть строка php с внутренней частью java. Однако "и" перепутались, и я не уверен, как это исправить. Вот код:
$page =
"<script type="text/javascript">
function outf(text) {
var mypre = document.getElementById("output");
mypre.innerHTML = mypre.innerHTML + text;
}
function builtinRead(x) {
if (Sk.builtinFiles === undefined || Sk.builtinFiles["files"][x] === undefined)
throw "File not found: '" + x + "'";
return Sk.builtinFiles["files"][x];
}
function runit() {
var prog = document.getElementById("yourcode").value;
var mypre = document.getElementById("output");
mypre.innerHTML = '';
Sk.canvas = "mycanvas";
Sk.pre = "output";
Sk.configure({output:outf, read:builtinRead});
try {
eval(Sk.importMainWithBody("<stdin>",false,prog));
}
catch(e) {
alert(e.toString())
}
}
</script>
<?php
fwrite($fh, $page); ?>
Сценарий делает то, что я хочу, но речевые метки в javascript-миксе с речевыми метками строки php, как вы можете видеть выше, заставляя php выкидывать ошибку. Есть ли способ исправить это?
благодаря
$page =
"<script type=\"text/javascript\">
function outf(text) {
var mypre = document.getElementById(\"output\");
mypre.innerHTML = mypre.innerHTML + text;
}
function builtinRead(x) {
if (Sk.builtinFiles === undefined || Sk.builtinFiles[\"files\"][x] === undefined)
throw \"File not found: '\" + x + \"'\";
return Sk.builtinFiles[\"files\"][x];
}
function runit() {
var prog = document.getElementById(\"yourcode\").value;
var mypre = document.getElementById(\"output\");
mypre.innerHTML = '';
Sk.canvas = \"mycanvas\";
Sk.pre = \"output\";
Sk.configure({output:outf, read:builtinRead});
try {
eval(Sk.importMainWithBody(\"<stdin>\",false,prog));
}
catch(e) {
alert(e.toString())
}
}
</script>";
<?php
fwrite($fh, $page);
?>
используйте здесь doc, например:
$page = <<<EOF
<script type="text/javascript">
.....enter the rest of the code here...
</script>
EOF;
echo $page;
найти руководство, чтобы узнать, как использовать heredoc
Используйте "''"
, или '""'
, или "\"\" "
чтобы избежать строк.
У вас есть несколько вариантов.
Лично я бы пошел на # 3
Это еще один способ, который является чем-то удобным и красивым для вас, будет содержать обзор, подсветку синтаксиса и не нужно бороться с кавычками:
<?php
ob_start(); // start output buffering
?> <!-- mark that there is no more php following, but HTML -->
<!-- copy your js here (without the very first quotes) -->
<script type="text/javascript">
function outf(text) {
var mypre = document.getElementById("output");
mypre.innerHTML = mypre.innerHTML + text;
}
// ............
</script>
<?php
$script = ob_get_contents();
ob_end_clean();
fwrite($fh, $script);
это напишет ваш js в файл