Javascript 带有ob#u get#u clean的php变量集是一个字符串,但它是赢的';t转换为整数

Javascript 带有ob#u get#u clean的php变量集是一个字符串,但它是赢的';t转换为整数,javascript,php,casting,ob-start,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

我试图通过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
我不明白为什么这两个例子不一样

为什么不使用cast(int)或intval()函数

例如:

$var = (int) $yourstring

OR

$var = intval($youtstring)

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

屏幕输出(在我的情况下):

实际输出(来源):


var d=新日期();
document.write(d.getTimezoneOffset());
一串
整数
0
试试这个

 $offset = 'timezone offset Colorado = 420 minutes';  
 preg_match_all('!\d+!', $offset, $matches);
 echo $offset;  // 420
 print_r( $matches); //array
 echo $matches[0][0]; //420

 $matches[0][0] += 1;

 echo $matches[0][0];

无论我如何转换这个字符串,
(int)$offset
intval($offset)
$offset*1
字符串以420开头,但是将其转换为整数的结果将值更改为整数0。您尝试过这个
$offset=(int)trim(ob_get_clean())吗
-60 string integer 0 
<script>
    var d = new Date();
    document.write(d.getTimezoneOffset());
</script>
string
integer
0
 $offset = 'timezone offset Colorado = 420 minutes';  
 preg_match_all('!\d+!', $offset, $matches);
 echo $offset;  // 420
 print_r( $matches); //array
 echo $matches[0][0]; //420

 $matches[0][0] += 1;

 echo $matches[0][0];