【问题标题】:Unable to convert string to integer in PHP无法在 PHP 中将字符串转换为整数
【发布时间】:2012-03-31 16:41:26
【问题描述】:

尽管我在使用(int)intval() 函数进行类型转换方面付出了所有努力。我仍然无法将字符串转换为整数。
每当我使用这些函数时,字符串都会转换为 0
这是我的代码 sn-p :

$resolution = "<script type='text/javascript'> 
                  document.write('#'+screen.width+'#');</script >";
$screen=str_replace("#","",$resolution);
echo $wid = (int)$screen;
echo $s = 98 * $wid;

类型转换的输出为 0。
我什至尝试使用var_dump 打印数据,但它也显示为int(0)

【问题讨论】:

  • 整个输入字符串中甚至没有一个整数,那么您希望它解析什么?
  • 确实有一个字符串:“1280”我已经回显并测试了它。它需要当前的屏幕分辨率并给我。我用 var_dump 试了一下,它给了我字符串:“1280”,即我的屏幕宽度。
  • 不,没有,PHP 不执行 javascript。您要转换的文字字符串是&lt;script type='text/javascript'&gt;document.write(''+screen.width+'');&lt;/script &gt;,没有数字...
  • 嗯..不,没有。在执行 screen.width 时会有,但是在 php 完成并将结果发送到客户端之后发生在客户端。你到底是在哪里呼应的?提供一个可运行的 sn-p,我可以将它复制粘贴到我的 php 解释器中,它会打印 1280 或类似的东西。
  • @JigarTank 它没有。发生的事情是您将文字 Javascript 代码发送到浏览器,浏览器在收到它时执行它,但此时它已经超出了 PHP。您的调试环境在欺骗您:see what's actually happening 带有 text/plain 视图。

标签: php javascript string int


【解决方案1】:

你的逻辑有缺陷。
您正在混合服务器和客户端代码。

服务器生成代码(php),然后将结果传递给客户端。 客户端然后接收生成的结果并解析 javascript。

<?php
// this is server code, resolution will be just a string to the server
$resolution = "<script type='text/javascript'> document.write('#'+screen.width+'#');</script>";
// you are now removing the # from the above string but keeping it all intact
$screen=str_replace("#","",$resolution);
// converting it to int returns a stupid value (zero?)
echo $wid = (int)$screen;
echo $s = 98 * $wid;
?>

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 2010-11-05
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多