获取php中大文件的页数有误

时间:2015-05-18 15:41:52

标签: php preg-match

我正在尝试使用此函数getPDFPages()查找上传的pdf文件中的页数;它适用于少于99页的pdf文件,但对于较大的文件不返回任何内容! 问题出在哪里?

由于

function getPDFPages($filepath)
{
   //$fp = (preg_replace("/\[(.*?)\]/i", "", $filepath), "r");
   $fp = fopen(preg_replace('/^.+\\\\/', '', $filepath), "r");
    $max = 0;
    set_time_limit(0);
    if (!$fp) {
        return "Could not open file: $filepath";
    } else {
        while (!@feof($fp)) {
            $line = @fgets($fp, 255);
            if (preg_match('/\/Count [0-9]+/', $line, $matches)) {
                preg_match('/[0-9]+/', $matches[0], $matches2);
                if ($max < $matches2[0]) {
                    $max = trim($matches2[0]);
                    print_r($matches);
                    print_r($matches2);
                    break;
                }
            }
        }
        @fclose($fp);
    }

    return $max;
}

1 个答案:

答案 0 :(得分:1)

您正在比较字符串值,而不是数值。在字符串比较中,&#34; 100&#34;小于&#34; 99&#34;就像&#34; axx&#34;小于&#34; zz&#34;按字典顺序。如果您将匹配转换为数字,则应该有效:

if ($max < (int)$matches2[0]) {
    $max = (int)trim($matches2[0]);
    print_r($matches);
    print_r($matches2);
    break;
}