2016-02-01 4 views
1

Я создаю анализатор SEO, который проверяет, не уменьшен ли файл CSS и js или нет. Парсер HTML будет извлекать URL-адреса CSS и js-файлов с веб-сайта.Как проверить файл css, который был изменен или нет, с помощью php

Как проверить, был ли этот файл CSS/js миниатюрным или нет с помощью PHP? URL

CSS файла может выглядеть так:

http://fonts.googleapis.com/css?family=Dosis:200,300,400,500,600,700,800 
http://www.inforge.in/css/style.css 
+5

Ваше определение: "минимализировано"? При анализе файла, что бы вы считали критерием для minified vs. not minified? Поскольку формального определения нет, это можно сделать только путем определения того, каковы ваши критерии, а затем изучить файл, чтобы узнать, соответствует ли он этим критериям или нет. – jfriend00

+0

Просто быстрая идея. Я бы проверял, имеет ли файл только одну строку и будут ли ненужные пробелы удалены. Кроме того, я бы проверял наличие комментариев. – 0x4Dark

+0

Просто проверьте, есть ли в нем файл '\ n'. Если у него его нет, то обычно он минимизируется – dvenkatsagar

ответ

1

Попробуйте это:

function is_mini($fileName){ 
    $f = @fopen($fileName, 'r'); $l = strlen(file_get_contents($fileName)); 
    if(strlen(fgets($f, $l)) === $l){ 
    return true; 
    } 
    return false; 
} 

Это открывает файл, основанный на $fileName для чтения, отсюда 'r', то тесты на strlen() из файл по одной строке, возвращаемой fgets(). Таким образом, это действительно просто гарантирует, что это одна строка кода.

+0

Можете ли вы сказать мне логику этого? –

1

Это функция PHP, которая может анализировать веб-сайт и находить, сколько локальных файлов CSS не минимизировано. Это немного больше, чем вы просили, но должны помочь вам.

<?php 

/** 
* Find the number of unminified CSS files on a website 
* @param string $url   The root URL of the website to test 
* @param integer $lines_per_file What's the max number of lines a minified CSS file should have? 
* @return integer     Number of CSS files on a website that aren't minified 
*/ 
function how_many_unminified_css_files($url, $lines_per_file = 3) 
    $unminimized_css_files = 0; 

    // Get the website's HTML 
    $html = file_get_contents($url); 

    // Find all local css files 
    preg_match("/({$url}.*\.css)/gi", $html, $css_files); 

    // Remove the global match that preg_match returns 
    array_shift($css_files); 

    // Loop through all the local CSS files 
    // And count how many lines they have 
    foreach($css_files as $css_file) { 
     $linecount = 0; 

     // "Open" the CSS file 
     $handle = fopen($css_file, "r"); 

     // Count the number of lines 
     while(!feof($handle)){ 
      $line = fgets($handle); 
      $linecount++; 
     } 

     // Close the CSS file 
     fclose($handle); 

     // If the CSS file has more lines than we deem appropriate, 
     // we'll consider it not minified 
     if ($linecount > $lines_per_file) { 
      $unminimized_css_files++; 
     } 
    } 

    // Return the number of files that we don't think are minified 
    return $unminimized_css_files; 
}