我“继承”了一个有缺陷的 PHP 页面。我不是这种语言的专家,但我想我找到了错误的根源。在一个循环中,页面向服务器发送一个格式化的字符串:我在 HTML 页面中找到的字符串是这样的:
2011-09-19__full_1
所以,我们似乎有三个部分:
- 日期(0,10);
- 一个字符串(10,6);
- 最终数字(17,1);
处理这种情况的代码如下:
$datagrid[] = array("date"=>substr($post_array_keys[$i], 0, 10),"post_mode"=>substr($post_array_keys[$i], 10, 6),"class_id"=>substr($post_array_keys[$i], 17, 1),"value"=>$_POST[$post_array_keys[$i]]);
会发生什么:最后的数字可以包含多个字符,所以这块:
"class_id"=>substr($post_array_keys[$i], 17, 1)
不正确,因为它似乎只检索了从 17 号开始的一个字符(这似乎对网站造成了奇怪的行为)。
作为字符串的最后一部分的整数,要获得整数,我可以这样安全地更改这条线吗?
"class_id"=>substr($post_array_keys[$i], 17, strlen($post_array_keys[$i])-17);