You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过JavaScript设置的PHP变量无法被识别为整数的问题

解决PHP转换前端传递的屏幕宽度为整数后变为0的问题
  • 排查隐藏非数字字符:
    肉眼看不到不代表没有零宽空格、Unicode控制字符这类特殊字符。可以通过bin2hex($currentWidth)将字符串转为十六进制编码,正常的"600"会输出363030,如果存在隐藏字符会出现额外编码(比如零宽空格对应e2808b)。

  • 先清理再转换:
    先过滤所有非数字内容,再转换为整数,彻底规避隐藏字符的影响:

    $cleanWidth = preg_replace('/\D/', '', $currentWidth);
    $currentWidthInt = (int)$cleanWidth;
    
  • 前端传值提前处理:
    JS中screen.width本身是数字类型,传值时直接传递纯数字,避免自动生成带多余字符的字符串。比如GET传参时写:window.location.href = 'yourpage.php?width=' + screen.width;

  • 用可靠的转换验证方式:
    使用filter_var同时完成验证与转换,能直接判断值是否为有效整数:

    $currentWidthInt = filter_var($currentWidth, FILTER_VALIDATE_INT);
    if ($currentWidthInt !== false) {
        if ($currentWidthInt >= 990) {
            // 执行对应逻辑
        } else {
            // 执行else块逻辑
        }
    } else {
        // 处理无效宽度值的情况
    }
    

内容的提问来源于stack exchange,提问作者John Cowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:27:42