[英]Return large amount of JavaScript from a PHP function that includes quotation marks
我在php中具有以下功能,它需要一個參數,並且打算輸出帶有參數的javascript代碼。
我有兩個問題:
返回值用引號將javascript代碼封裝起來,但是javascript代碼本身中的引號實際上導致其提前中斷。
javascript中的$標記不起作用,因為我認為jquery $標記被視為php $,請問有什么方法可以使javascript代碼段中的美元符號和引號不會混淆php?
function returnJS($input){ return " $("#toggle1").click(function(){ if(toggle != 1 && open == true){ open = false; var panel = "#panel"+toggle; $(panel).slideToggle("slow"); } toggle = $input;// I need this to update from php argument $("#panel1").slideToggle("slow",function(){ $('html, body').animate({ scrollTop: $("#panel1").offset().top }, animation_time );}); if(open == true) open = false; else open = true; return false; }); " }
這樣做的目的是,我想構建一個具有可變數量的這些段的javascript文件,我將讓php完全構建可以在網頁中使用的javascript文件。
編輯:
例如:
<?php
$bar = 'hello';
$tmp = "My name is $bar";
echo $tmp;
?>
在我的代碼中,我不想讓php對$變量感到困惑,我想使javascript代碼中的那些$對php完全不可見。
您需要在雙引號前面加上\\來轉義雙引號。 例如:
function returnJS($input){
return '
$("#toggle1").click(function(){
if(toggle != 1 && open == true){
open = false;
var panel = "#panel"+toggle;
$(panel).slideToggle("slow");
}
toggle = '.$input.';// I need this to update from php argument
$("#panel1").slideToggle("slow",function(){
$(\'html, body\').animate({
scrollTop: $("#panel1").offset().top
}, animation_time );});
if(open == true)
open = false;
else
open = true;
return false;
});
'
}
我的建議:
例:
$js =
<<<'JS'
$("#toggle1").click(function(){
if(toggle != 1 && open == true){
open = false;
var panel = "#panel"+toggle;
$(panel).slideToggle("slow");
}
toggle = {{input}}; // I need this to update from php argument
$("#panel1").slideToggle("slow",function(){
$('html, body').animate({
scrollTop: $("#panel1").offset().top
}, animation_time );});
if(open == true)
open = false;
else
open = true;
return false;
});
return;
JS;
$input = json_encode($input);
return str_replace('{{input}}', $input, $js);
}
print returnJS('hi "there" ');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.