如何使用javascript在echo中转义php代码

时间:2015-06-22 10:04:42

标签: javascript php

我怎样才能逃避这一点:var tab_mois_nb_match = <?php ".json_encode($tab_mois_nb_match)." ;?> ;

我有一个代码错误,但是在conle.log中使用sussess生成数组,这完全是疯了。

 foreach($tab_bases2 as $key => $univers){              
            $tab_nb_match_par_user = users_nb_match($univers);
            $tab_mois_nb_match = mois_nb_match($univers);

            echo "<div id='".$univers."' ></div>";
            echo "<script type='text/JavaScript'> 
                    var tab_mois_nb_match = <?php ".json_encode($tab_mois_nb_match)." ;?> ;
                    var line3 = [];tab_date = [];
                    for(var v in tab_mois_nb_match){
                        line3.push([v,Number(tab_mois_nb_match[v])]);
                        tab_date.push(v[0]+v[1]+v[2]+v[3]);
                    }
                    console.log(tab_mois_nb_match);
                  </script>";
         }

2 个答案:

答案 0 :(得分:2)

您正在使用PHP命令(echo)混合内联PHP。

当你回显一个字符串时,你就像正常一样,这意味着你可以混合文字字符串(你手动输入的js)和函数输出(在这种情况下就像一个json):

echo "<script type='text/JavaScript'> 
                var tab_mois_nb_match = ".json_encode($tab_mois_nb_match)." ;
                var line3 = [];tab_date = [];
                for(var v in tab_mois_nb_match){
                    line3.push([v,Number(tab_mois_nb_match[v])]);
                    tab_date.push(v[0]+v[1]+v[2]+v[3]);
                }
                console.log(tab_mois_nb_match);
              </script>";

字符串是一个字符串。

编辑: 但是,我应该补充一点,如果您需要在插入字符串之前进行评估,只需在其周围放置一些括号。

echo "<script type='text/JavaScript'> 
                var tab_mois_nb_match = ".(json_encode($tab_mois_nb_match)+4)." ;
                var line3 = [];tab_date = [];
                for(var v in tab_mois_nb_match){
                    line3.push([v,Number(tab_mois_nb_match[v])]);
                    tab_date.push(v[0]+v[1]+v[2]+v[3]);
                }
                console.log(tab_mois_nb_match);
              </script>";

好的,所以+4是一个不好的例子,但是比如说,你需要将一个函数的输出插入到另一个函数中......括号就是那个诀窍。

最后,并非所有功能都能像这样工作。有时,您只需将函数的输出保存到变量中,然后将变量插入到字符串中。

答案 1 :(得分:2)

你不能在php中声明php。

您可以通过两种方式编写代码:

第一种方法:

 foreach($tab_bases2 as $key => $univers){              
        $tab_nb_match_par_user = users_nb_match($univers);
        $tab_mois_nb_match = mois_nb_match($univers);

        echo "<div id='".$univers."' ></div>";
?>


<script type='text/JavaScript'> 
                var tab_mois_nb_match = <?php json_encode($tab_mois_nb_match) ;?> ;
                var line3 = [];tab_date = [];
                for(var v in tab_mois_nb_match){
                    line3.push([v,Number(tab_mois_nb_match[v])]);
                    tab_date.push(v[0]+v[1]+v[2]+v[3]);
                }
                console.log(tab_mois_nb_match);
              </script>

<?php                  
     }
?>

第二种方法

foreach($tab_bases2 as $key => $univers){              
        $tab_nb_match_par_user = users_nb_match($univers);
        $tab_mois_nb_match = mois_nb_match($univers);

        echo "<div id='".$univers."' ></div>";
        echo "<script type='text/JavaScript'> 
                var tab_mois_nb_match = ".json_encode($tab_mois_nb_match)."  ;
                var line3 = [];tab_date = [];
                for(var v in tab_mois_nb_match){
                    line3.push([v,Number(tab_mois_nb_match[v])]);
                    tab_date.push(v[0]+v[1]+v[2]+v[3]);
                }
                console.log(tab_mois_nb_match);
              </script>";
     }