【问题标题】:Cannot convert to int from string in php无法从php中的字符串转换为int
【发布时间】:2015-11-02 16:15:27
【问题描述】:

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

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 代码首先在服务器上执行。然后它将结果发送到执行 javascript 的用户浏览器... PHP 无法从该 javascript 获得任何值作为回报。
  • 这已经在这个特定的网站上有一段时间了(不是我最初写的),我被要求更新它。我想知道是不是这样。
  • 我猜它从来没有奏效过。有人对那个发出了嘘声。

标签: javascript php string integer


【解决方案1】:

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

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2020-12-12
    相关资源
    最近更新 更多