doubi9531 2017-08-06 22:27
浏览 29
已采纳

在JavaScript代码中转义<?php?

I have to echo the below JavaScript code with using only one <?php tag. How to escape <?php inside the echo?

<script type="text/javascript">

function drawLatestTen() {
    var data = google.visualization.arrayToDataTable(<?php echo json_encode( $json ); ?>);

    var ac = new google.visualization.ComboChart(document.getElementById('ipt_dolt_ten_stat'));
    ac.draw(data, {
        title : '<?php _e( 'Last 30 days form submission statistics', 'ipt_dolt' ); ?>',
        height : 300,
        vAxis : {title : '<?php _e( 'Submission Hits', 'ipt_dolt' ) ?>'},
        hAxis : {title : '<?php _e( 'Date', 'ipt_dolt' ); ?>'},
        seriesType : 'bars',
        series : {<?php echo count( $json[0] ) - 2; ?> : {type : 'line'}},
        legend : {position : 'top'},
        tooltip : {isHTML : true}
    });
}

</script>

so the result is:

<?php echo '<script type="text/javascript">

function drawLatestTen() {
    var data = google.visualization.arrayToDataTable(<?php echo json_encode( $json ); ?>);

    var ac = new google.visualization.ComboChart(document.getElementById(\'ipt_dolt_ten_stat\'));
    ac.draw(data, {
        title : \'<?php _e( \'Last 30 days form submission statistics\', \'ipt_dolt\' ); ?>\',
        height : 300,
        vAxis : {title : \'<?php _e( \'Submission Hits\', \'ipt_dolt\' ) ?>'},
        hAxis : {title : \'<?php _e( \'Date\', \'ipt_dolt\' ); ?>\'},
        seriesType : \'bars\',
        series : {<?php echo count( $json[0] ) - 2; ?> : {type : \'line\'}},
        legend : {position : \'top\'},
        tooltip : {isHTML : true}
    }); ?>
}

</script>'; ?>
  • 写回答

2条回答 默认 最新

  • doucong1853 2017-08-06 22:39
    关注

    Mixing php / js can be a bit confusing because the quotes can intersect.

    Notice that we're using " and '. You might want to echo with " or with ' depending on what you need to accomplish. echoing with " in php allows you to use variables in the string, ie: echo "hello {$username}" the lamdas ({}) aren't required, but many devs prefer them.

    Here's an incomplete example to get you started. You just echo it all at once and concatenate with . for strings in php.

    <?php 
    $title = translate( 'Submission Hits', 'ipt_dolt' );
    $date = translate( 'Date', 'ipt_dolt' );
    echo '
    <script type="text/javascript">
    
    function drawLatestTen() {
        var data = google.visualization.arrayToDataTable( '. json_encode( $json ) .' );
    
        var ac = new google.visualization.ComboChart(document.getElementById('ipt_dolt_ten_stat'));
        ac.draw(data, {
            title : '<?php _e( 'Last 30 days form submission statistics', 'ipt_dolt' ); ?>',
            height : 300,
            vAxis : {title : "'. $tite .'"},
            hAxis : {title : "'.$date.'"}, // notice two quotes, double to denote a string in js and singles to break/concatenate the php output. (that's where things get tricky.)
            seriesType : 'bars',
            series : { '. (count( $json[0] ) - 2) .' : {type : 'line'}},
            legend : {position : 'top'},
            tooltip : {isHTML : true}
        });
    }
    </script>'; ?>
    

    Edit: Special thanks to @wh1t3h4ck5 & @jh1711 for helping me tweak this.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀