eventuell könnte das Script bei den Class-Problem helfen.
Ist nicht das sauberste und auch nur auf einem lokalen Server getestet.
Es werden folgende Dateien untersucht.
htm
html
php
php4
incl
Dabei ist es egal ob Groß oder Keinschreibung
In Zeile 2 Muss der Pfad zu der CSS-Datei rein.
Das Verzeichnes mit der Suchdatei ist als oberstes Verzeichniss anzusehen.
Die Datenstruktur der CSS sollte so aussehen:
QUELLTEXT
.Navi2 {background-color:#CC0000;}
.Navi3 {background-color:#FED634;}
.Navi4 {color:#000000; background-color:#FFEA96;}
a.Navi5:link, a.Navi5:visited {text-decoration:none; color:#000000;}
a.Navi5:active, a.Navi5:hover {text-decoration:none; color:#006600;}
Ist eine deklaration mit "
/* Navi2 {background-color:#CC0000;}" aukommentiert wird diese trotzdem mit in die Suche einbezogen.
Bekannte Fehler
Es werden auch Definitionen wie body,td,a usw angezeicht da diese nicht über class definiert werden müssen.
Eventuell ist das ganze Ding ja auch schrott.
MfG
QUELLTEXT
<?php
$css_Datei="css/style.css";
function dirlist($dir)
{
$list = array();
$dp = opendir($dir);
while($file = readdir($dp))
{
if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file;
else
{
if($file != ".." && $file != ".")
{
$clist = dirlist($dir."/".$file);
foreach($clist as $file2)
{
array_push($list, $file2);
}
}
}
}
return $list;
}
$list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/")));
for ($counter_list=0;$counter_list<count($list);$counter_list++)
{
$endung=pathinfo($list[$counter_list]);
if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='html' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl')
{
$dateizeilen = file($list[$counter_list]);
//echo count($dateizeilen).'<br>';
for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++)
{
if(strpos($dateizeilen[$count_dateizeilen],'class'))
{
$dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]);
$classEN=explode('class=\'',$dateizeilen[$count_dateizeilen]);
//echo count($classEN).'<br>';
for($count_classEN=1;$count_classEN<count($classEN);$count_classEN++)
{
$classEN_1=explode('\'',$classEN[$count_classEN]);
//echo "<textarea name='' cols='60' rows='3'>".$classEN_1[0]."</textarea><br>";
$class_array[]=$classEN_1[0];
}
}
}
}
//echo $list[$counter_list].'<br>';
}
$class_array_1=array_unique($class_array);
//
//#############################################################################
//
$csszeilen = file($css_Datei);
for($count_csszeilen=0;$count_csszeilen < count($csszeilen);$count_csszeilen++)
{
if(strpos($csszeilen[$count_csszeilen],'{'))
{
$csszeilen_1=explode('{',$csszeilen[$count_csszeilen]);
$csszeilen_1[0]=trim(str_replace('/*','',$csszeilen_1[0]));
$csszeilen_1[0]=trim(str_replace(':link','',$csszeilen_1[0]));
$csszeilen_1[0]=trim(str_replace(':hover','',$csszeilen_1[0]));
$csszeilen_1[0]=trim(str_replace(':visited','',$csszeilen_1[0]));
$csszeilen_1[0]=trim(str_replace(':active','',$csszeilen_1[0]));
if(strpos($csszeilen_1[0],','))
{
$csskomma=explode(',',$csszeilen_1[0]);
for($i=0;$i<count($csskomma);$i++)
$css_array[]=trim($csskomma[$i]);
}
else $css_array[]=trim($csszeilen_1[0],'.');
}
}
//
//#############################################################################
//
//echo count($css_array).'<br>';
$css_array_1=array_unique($css_array);
//echo count($css_array_1).'<br>';
for($i=0;$i < count($css_array_1);$i++)
{
if(strpos($css_array_1[$i],'.'))
{
$css_array_1[$i]=str_replace('.','',strstr($css_array_1[$i],'.'));
}
if($css_array_1[$i]!='')
{
$css[] = $css_array_1[$i];
}
}
$unbenutzt = array_diff($css,$class_array_1);
for($i=0;$i < count($unbenutzt);$i++)
{
if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>';
}
?>