无法从php中的字符串转换为int

时间:2015-11-02 16:15:27

标签: 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。

我知道以这种方式做事的陷阱,但遗憾的是这是遗留代码,必须以这种方式完成,原因有很多。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:0)

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

让PHP知道客户端屏幕大小的唯一方法是使用javascript计算它,然后使用ajax或屏幕大小为参数{{1}的重定向传递值}

在当前代码中,您已经将javascript变量解析为int。这适用于javascript变量(可以在这里看到:http://jsfiddle.net/j47k01jt/)。