javascript - 使用 ob_get_clean 设置的 php 变量是一个字符串,但不会转换为整数

标签 javascript php casting ob-start

我试图通过 JavaScript 获取浏览器时区,并使用 ob_start() 和 ob_get_clean 将其捕获到 php 变量中。 ob_get_clean 设置的值显示为字符串,但是当我尝试将其转换为 php 中的 int 时,该值变为 0。

无论我如何转换这个字符串,(int) $offset或intval($offset)或$offset * 1字符串以420开头,但将其转换为整数的结果将值更改为整数0.

<?php
    ob_start();
?>

<script>
    var d = new Date();
    document.write(d.getTimezoneOffset());
</script>

<?php
     $offset = trim(ob_get_clean());  // timezone offset Colorado = 420 minutes
     echo $offset;  // 420
     echo gettype($offset); // string
     $offset += 0;
     echo gettype($offset); // integer
     echo $offset; // shows 0 - I expect the value to be 420

我期望 $offset 是一个值为 420 的整数。现在我用常规字符串尝试类似的代码,得到了预期的结果。

$strnum = '530';
echo gettype($strnum);  // string
$strnum += 0;
echo gettype($strnum);  // integer
echo $strnum;  // 530
?>

我不明白为什么这两个示例的工作效果不同。

最佳答案

你不能这么做,你无法捕获 php 中的 JS 脚本输出,你需要通过 ajax 调用传递它。检查页面的源输出,而不是屏幕输出。

屏幕输出(就我而言):

-60 string integer 0 

实际输出(源):

<script>
    var d = new Date();
    document.write(d.getTimezoneOffset());
</script>
string
integer
0

关于javascript - 使用 ob_get_clean 设置的 php 变量是一个字符串,但不会转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948916/

相关文章:

javascript - 用户代理,如何自动为不同的设备设置不同的 css 文件

javascript - 使用jQuery读取img src并动态插入img src

javascript - 动画显示 block /无,具有相应的功能

c++ - 与 std::list 一起使用的指针上的接口(interface)类型转换的多重继承

javascript - 具有共享路由器上下文的多个 ReactDOM.render 调用

php - 无法连接 MYSQL,我做错了什么?

php - Silex + Swift Mailer 不工作

php - 添加从 $ 到 $.php 的重写后 nginx CSS 中断

Java隐式转换int到byte

c++ - 输入类型转换?