Как разместить код JavaScript внутри строки PHP

0

Я использую 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 выкидывать ошибку. Есть ли способ исправить это?

благодаря

  • 1
    Избегайте ваших слов: \, или, если вы считаете, что это грязно, вы можете заменить их символами в коде JS.
Теги:
fwrite

5 ответов

1
Лучший ответ
$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); 
?>
1

используйте здесь doc, например:

$page = <<<EOF
    <script type="text/javascript"> 
    .....enter the rest of the code here...
    </script>
EOF;

echo $page;

найти руководство, чтобы узнать, как использовать heredoc

1

Используйте "''", или '""', или "\"\" " чтобы избежать строк.

1

У вас есть несколько вариантов.

  1. Замените все двойные кавычки в вашем javascript одинарными кавычками
  2. Выбери все цитаты, о которых говорил Андреас
  3. Использовать heredoc

Лично я бы пошел на # 3

0

Это еще один способ, который является чем-то удобным и красивым для вас, будет содержать обзор, подсветку синтаксиса и не нужно бороться с кавычками:

<?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 в файл

Ещё вопросы

Сообщество Overcoder
Наверх
Меню