Maison > interface Web > tutoriel CSS > le corps du texte

Comment extraire des classes CSS spécifiques avec PHP ?

Susan Sarandon
Libérer: 2024-11-15 09:24:02
original
731 Les gens l'ont consulté

How to Extract Specific CSS Classes with PHP?

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
Copier après la connexion

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;
}
Copier après la connexion

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'];
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal