2017-03-21 5 views
1

Ich habe ein paar minimierte Dateien (CSS und JS) und ich möchte automatisch die erste Zeile von jedem ersetzen (die erste Zeile jeder Datei ist so etwas wie Minified @ 2017-03-21), wenn ich Minimiere diese Dateien.Ersetze automatisch die erste Zeile in jeder Datei

Ich bin derzeit, dass Informationen auf diese Weise hinzufügen, aber ich akzeptiere Vorschläge:

<?php 
$file = "test.css"; 
$add_info = "/* --- Minified today --- */ \n"; 
$add_info .= file_get_contents($file); 
file_put_contents($file, $add_info); 
?> 

Also meine Datei wie folgt beendet:

/* --- Minified today --- */ 
body{margin:0}; /* etc */ 

Und natürlich nach ein paar Wiederholungen wie das endet :

/* --- Minified today --- */ 
/* --- Minified today --- */ 
/* --- Minified today --- */ 
/* --- Minified today --- */ 
body{margin:0}; /* etc */ 

was überhaupt nicht nützlich ist.

Also, wie kann ich das tun (ohne Leistung zu töten)? Diese Aktion wird nur 1 oder 2 Mal pro Woche durchgeführt (wie die meisten), und die Dateien sind ~ 30 KB nach dem Minimieren.

Hinweis: Ich verwende PHP 5.5 und Apache 2.4.

Antwort

3

Sie können die Datei in ein Array mit file() lesen und die erste Zeile ersetzen. Dann file_put_contents() wird das Array für Sie implodieren:

$file = "test.css"; 
$lines = file($file); 
$add_info = "/* --- Minified today --- */ \n"; 
$lines[0] = $add_info; 
file_put_contents($file, $lines); 

Wenn sie nicht, dass als erste Zeile dann prüfen und entweder ersetzen oder fügen Sie es:

if(strpos($lines[0], '/* --- Minified') !== false) { 
    $lines[0] = $add_info; 
} else { 
    array_unshift($lines, $add_info); 
} 
+0

wie erwartet funktioniert. Was ist mit Leistung? –

+1

Für das, was Sie gesagt haben, werden Sie es nicht einmal bemerken. Wahrscheinlich nicht anders als das, was Sie jetzt tun. Der einzige Unterschied ist ein Array anstelle einer Zeichenfolge. – AbraCadaver

+0

Wann kann der Unterschied bemerkt werden? Danke für deine Antwort. –

Verwandte Themen