javascript - 无法从 PHP 中的字符串转换为 int

标签 javascript php string integer

所以我目前正在编写一段行为相当愚蠢的代码。

function screenWidth($buffer)
{
    global $widthTest;

    $widthTest = $buffer;

}

ob_start("screenWidth");

$screenWidth = '<script type="text/javascript">document.write(parseInt(document.documentElement.clientWidth));</script>';

echo $screenWidth;

$width = ob_get_contents();

ob_end_clean();

echo $width;
echo $widthTest;

这会产生一个字符串,它可以给我屏幕宽度,无需 JavaScript,这非常棒。但是,由于某种原因,我无法将其转换为整数。

我错过了什么吗?我已经以纯文本形式运行了它,它肯定会返回数字,而不仅仅是 javascript。它被存储为字符串,如果我尝试使用 intval 或 (int)$width; 转换它;然后每次都返回 0。

我知道以这种方式做事的陷阱,但不幸的是,这是遗留代码,并且由于各种原因必须以这种方式完成。

有人有什么想法吗?

最佳答案

在 PHP 中不可能得到这样的屏幕宽度,正如 @MagnusEriksson 也提到的,PHP 是在服务器上运行的。在评估您的 PHP 代码时,屏幕尺寸是未知的。 javascript运行在客户端,它可以检测屏幕尺寸,因为屏幕是客户端的一个对象。 PHP 永远无法知道屏幕的大小,因为它是在服务器上运行的,而服务器上没有屏幕(或者至少没有正确的屏幕)。

让 PHP 知道客户端屏幕大小的唯一方法是使用 javascript 计算它,然后使用 ajax 或以屏幕大小作为参数的重定向来传递该值 link.php?screensize=xxx

<小时/>

在当前代码中,您已经将 javascript 变量解析为 int。这对于 javascript 变量来说效果很好(如下所示: http://jsfiddle.net/j47k01jt/ )。

关于javascript - 无法从 PHP 中的字符串转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33482082/

相关文章:

java - java中递归方法的停止并返回值

c# - 从 C# 中的 URI 字符串获取文件名

javascript - Jquery仅切换单击的div下的p标签

javascript - $scope变量不断变化

php - 将 mysql 时间戳格式化为有意义的内容

java - 如何在另一种方法中使用来自一种方法的用户输入字符串?

Javascript 动态 anchor 参数

javascript - 声明新变量或在函数中使用引用?

php - 对 mySQL 查询进行异常(exception)处理

javascript - html keygen替代方案,在浏览器中生成 key 对