Analyse CSS avec PHP pour l'extraction sélective de classes
Dans cet article, nous visons à relever le défi de l'analyse d'un fichier CSS et de l'extraction de fichiers spécifiques noms de classe contenant une chaîne prédéfinie. Nous recherchons une solution en PHP qui accomplisse cette tâche efficacement.
Énoncé du problème :
Nous voulons analyser un fichier CSS et identifier tous les noms de classe contenant "postclass" dans leurs noms. Le résultat souhaité est un tableau de ces noms de classe, comme indiqué ci-dessous :
arrayentry1: #content.postclass-subcontent arrayentry2: #content2.postclass-subcontent2
Approche des expressions régulières :
Une approche courante de l'analyse CSS consiste à utiliser des expressions régulières. . Cependant, pour cette exigence spécifique, les expressions régulières ne sont peut-être pas l'option la plus appropriée. L'exemple CSS fourni contient plusieurs sélecteurs avec une structure complexe, ce qui rend difficile l'extraction précise des noms de classe souhaités en utilisant uniquement des expressions régulières.
Solution basée sur PHP :
À la place de s'appuyer uniquement sur des expressions régulières, nous présentons une solution basée sur PHP qui simplifie l'analyse processus :
function parse($file){ $css = file_get_contents($file); preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/', $css, $arr); $result = array(); foreach ($arr[0] as $i => $x){ $selector = trim($arr[1][$i]); $rules = explode(';', trim($arr[2][$i])); $rules_arr = array(); foreach ($rules as $strRule){ if (!empty($strRule)){ $rule = explode(":", $strRule); $rules_arr[trim($rule[0])] = trim($rule[1]); } } $selectors = explode(',', trim($selector)); foreach ($selectors as $strSel){ $result[$strSel] = $rules_arr; } } return $result; }
Utilisation :
Pour utiliser cette solution, récupérez le contenu du fichier CSS dans une variable. Ensuite, appelez la fonction parse() avec le contenu du fichier comme argument. Cette fonction renvoie un tableau contenant les noms de classes souhaités sous forme de clés et leurs règles sous forme de valeurs. Par exemple :
$css = parse('css/'.$user['blog'].'.php'); $css['#selector']['color'];
Cette approche permet une analyse plus dynamique et ciblée des fichiers CSS, la rendant flexible pour diverses exigences d'analyse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!