我必须仅使用一个<?php
标记回显以下JavaScript代码。如何在回声中逃避<?php
?
<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>
所以结果是:
<?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>'; ?>
答案 0 :(得分:1)
正如@admcfajn回答的那样,这是解决它的方法,但有时我必须通过数千行代码进行这些更改,所以我通常使用正则表达式进行更改。我最终得到了这个解决方案:
<?php
代码替换为';
?>
代码替换为echo '
'
\'
echo
函数分解为多个echo函数。我是这样做的,效果很好。
echo '
<script type="text/javascript">
function drawLatestTen() {
var data = google.visualization.arrayToDataTable(';
echo json_encode($json);
echo ');
var ac = new google.visualization.ComboChart(document.getElementById(\'ipt_dolt_ten_stat\'));
ac.draw(data, {
title : \'';
_e('Last 30 days form submission statistics', 'ipt_dolt');
echo '\',
height : 300,
vAxis : {title : \'';
_e('Submission Hits', 'ipt_dolt');
echo '\'},
hAxis : {title : \'';
_e('Date', 'ipt_dolt');
echo '\'},
seriesType : \'bars\',
series : {';
echo count($json[0]) - 2;
echo ' : {type : \'line\'}},
legend : {position : \'top\'},
tooltip : {isHTML : true}
});
}
</script>
';
答案 1 :(得分:-1)
混合php / js可能有点混乱,因为引号可以相交。
请注意,我们正在使用"
和'
。您可能希望与"
或'
回应,具体取决于您需要完成的工作。在PHP中用"
回显允许你在字符串中使用变量,即:echo "hello {$username}"
lamdas({}
)不是必需的,但许多开发者更喜欢它们。
这是不完整的示例,可帮助您入门。您只需立即回显所有内容,并使用.
连接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>'; ?>
编辑:特别感谢@ wh1t3h4ck5&amp; @ jh1711帮我调整一下。