如何在PHP生成的链接中插入浏览器端获取的Javascript日期
问题原因
PHP属于服务端运行的脚本,JavaScript属于客户端(用户浏览器)运行的脚本,二者执行时机完全不同:
你代码中$date变量存储的是完整的JS代码字符串,不是JS运行后输出的日期值:
- 直接
echo $date时,浏览器接收到响应后会执行这段JS代码,输出日期,所以你能在页面上看到正常的日期展示 - 当你用PHP把
$date拼接到href属性中时,服务端会直接把整段JS代码作为普通字符串拼接在链接里,最终生成的HTML链接实际为<a href="/example/<script>/*一整段JS代码*/</script>"> Today </a>,自然无法正常使用。
解决方案
方案1:直接用PHP生成日期(实现最简单)
如果业务允许使用服务端时间,直接用PHP原生日期函数生成对应格式的日期即可,不需要调用JS:
<?php if ( ! defined( 'ABSPATH' ) ) exit; // 如需对齐智利时区,先添加下行代码 // date_default_timezone_set('America/Santiago'); $date = date('d-m-Y'); echo $date; // 可正常生成链接 echo '<a href="/example/'.$date.'"> Today </a>'; ?>
方案2:必须使用客户端本地时间时,全用JS实现逻辑
如果必须取用户设备的本地时间,就不要用PHP拼接链接,所有日期相关逻辑都在客户端用JS完成:
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?> <script type="text/javascript"> var event = new Date(); var options = { year: "numeric", month: "numeric", day: "numeric" }; var date = event.toLocaleDateString("es-CL", options); // 输出日期 document.write(date); // 生成拼接了日期的链接 document.write('<a href="/example/' + date + '"> Today </a>'); </script>
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

