javascript
  • php
  • string
  • integer
  • 2015-11-02 76 views 1 likes 
    1

    因此,我目前正在研究一段相当愚蠢的错误代码。无法从字符串转换为int在PHP中

    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

    我真的不明白这是如何工作的? PHP代码首先在服务器上执行。然后它将结果发送到JavaScript执行的用户浏览器...... PHP无法从该javascript获得任何回报。 –

    +0

    这已经在这个特定的网站上一段时间了(最初不是我写的),而且我被要求更新它。我曾想知道是否是这种情况。 – ukitconsultant

    +0

    我想它从来没有工作。有人对此做出了一个嘘声。 –

    回答

    0

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

    让PHP知道客户端的屏幕的尺寸是通过使用JavaScript计算它,然后通过使用ajax或与屏幕尺寸的重定向传递值作为参数link.php?screensize=xxx


    的唯一办法

    在您当前的代码中,您已经将javascript变量解析为int。这对javascript变量正常工作(可以在这里看到:http://jsfiddle.net/j47k01jt/)。

    相关问题