通过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
相关产品推荐
相关产品推荐

