簡體   English   中英

如何將javascript代碼放在php字符串中

[英]How to place javascript code inside a php string

我正在使用fwrite將javascript添加到外部腳本。 為了做到這一點,需要有一個包含Java的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); ?>

腳本執行了我想要的操作,但是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); 
?>

像這樣使用這里的文檔:

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

echo $page;

查找手冊以學習如何使用heredoc

您有幾種選擇。

  1. 用單引號替換JavaScript中所有的雙引號
  2. 如Andreas所說,轉義所有引號
  3. 使用heredoc

就個人而言,我會排名第三

使用"''"'""'"\\"\\" "來轉義字符串。

這是另一種舒適和美觀的方式,因為您可以保持概述,語法突出顯示並且不必與引號進行斗爭:

<?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寫入文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM