Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将javascript代码放入php字符串中_Javascript_Php_Fwrite - Fatal编程技术网

如何将javascript代码放入php字符串中

如何将javascript代码放入php字符串中,javascript,php,fwrite,Javascript,Php,Fwrite,我正在使用fwrite将javascript添加到外部脚本中。为了做到这一点,需要一个包含java的php字符串。但是“和”会混淆,我不知道如何修复。下面是代码: $page = "<script type="text/javascript"> function outf(text) { var mypre = document.getElementById("output"); mypre.innerHTML = mypre.innerHTML + tex

我正在使用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); ?>
$page=
" 
功能输出(文本){
var mypre=document.getElementById(“输出”);
mypre.innerHTML=mypre.innerHTML+文本;
} 
函数内置读取(x){
if(Sk.builtinFiles===未定义| | Sk.builtinFiles[“文件”][x]==未定义)
抛出“找不到文件:”“+x+””;
返回Sk.builtinFiles[“files”][x];
}
函数runit(){
var prog=document.getElementById(“yourcode”).value;
var mypre=document.getElementById(“输出”);
mypre.innerHTML='';
Sk.canvas=“mycanvas”;
Sk.pre=“输出”;
configure({output:outp,read:builtinRead});
试一试{
评估(Sk.importMainWithBody(“,false,prog));
}
捕获(e){
警报(例如toString())
}
} 
脚本执行了我希望它执行的操作,但是javascript中的语音标记与php字符串语音标记混合在一起,如您所见,这导致php抛出错误。有办法解决这个问题吗

谢谢

$page=
" 
功能输出(文本){
var mypre=document.getElementById(\“output\”);
mypre.innerHTML=mypre.innerHTML+文本;
} 
函数内置读取(x){
if(Sk.builtinFiles===未定义| | Sk.builtinFiles[\“files\”][x]==未定义)
未找到抛出\“文件:'\'+x+\'\”;
返回Sk.builtinFiles[\“files\”][x];
}
函数runit(){
var prog=document.getElementById(\“yourcode\”).value;
var mypre=document.getElementById(\“output\”);
mypre.innerHTML='';
Sk.canvas=\'mycanvas\';
Sk.pre=\“输出\”;
configure({output:outp,read:builtinRead});
试一试{
eval(Sk.importMainWithBody(\“\”,false,prog));
}
捕获(e){
警报(例如toString())
}
} 
";
$page=
" 
功能输出(文本){
var mypre=document.getElementById(\“output\”);
mypre.innerHTML=mypre.innerHTML+文本;
} 
函数内置读取(x){
if(Sk.builtinFiles===未定义| | Sk.builtinFiles[\“files\”][x]==未定义)
未找到抛出\“文件:'\'+x+\'\”;
返回Sk.builtinFiles[\“files\”][x];
}
函数runit(){
var prog=document.getElementById(\“yourcode\”).value;
var mypre=document.getElementById(\“output\”);
mypre.innerHTML='';
Sk.canvas=\'mycanvas\';
Sk.pre=\“输出\”;
configure({output:outp,read:builtinRead});
试一试{
eval(Sk.importMainWithBody(\“\”,false,prog));
}
捕获(e){
警报(例如toString())
}
} 
";
在此处使用如下文档:

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

echo $page;
$page=像这样在这里使用文档:

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

echo $page;

$page=这是另一种舒适美观的方式,因为您可以保持概述、语法突出显示,而不必使用引号:

<?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);

功能输出(文本){
var mypre=document.getElementById(“输出”);
mypre.innerHTML=mypre.innerHTML+文本;
} 
// ............

这是另一种舒适而美观的方式,您可以保持概述、语法突出显示,而不必使用引号:

<?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);

功能输出(文本){
var mypre=document.getElementById(“输出”);
mypre.innerHTML=mypre.innerHTML+文本;
} 
// ............

你有几个选择

  • 用单引号替换javascript中的所有双引号
  • 转义Andreas提到的所有引用
  • 使用

  • 就我个人而言,我会选择#3

    你有几个选择

  • 用单引号替换javascript中的所有双引号
  • 转义Andreas提到的所有引用
  • 使用
  • 就我个人而言,我会用

    使用
    ”或
    ,或
    “\\”
    来转义字符串。

    使用
    ”或
    ”或
    “\”
    来转义字符串。

    转义您的“是这样的:\”,或者如果您认为这是脏的,您可以替换您的字符串在JS代码中用s替换“s”。像这样转义你的“s:\”,或者如果你认为这是肮脏的,你可以在JS代码中用s替换你的“s”。