選択的なクラス抽出のための PHP による CSS の解析
この記事では、CSS ファイルを解析して特定のクラスを抽出するという課題に取り組むことを目的としています。事前定義された文字列を含むクラス名。私たちは、このタスクを効果的に達成する PHP のソリューションを探しています。
問題ステートメント:
CSS ファイルを解析し、「postclass」を含むすべてのクラス名を特定したいと考えています。彼らの名前。必要な出力は、以下に示すように、これらのクラス名の配列です。
arrayentry1: #content.postclass-subcontent arrayentry2: #content2.postclass-subcontent2
正規表現のアプローチ:
CSS を解析する一般的なアプローチの 1 つは、正規表現を利用することです。 。ただし、この特定の要件では、正規表現が最適なオプションではない可能性があります。提供されているサンプル CSS には複雑な構造を持つ複数のセレクターが含まれているため、正規表現だけを使用して目的のクラス名を正確に抽出するのは困難です。
PHP ベースのソリューション:
代わり正規表現のみに依存するのではなく、解析プロセスを簡素化する PHP ベースのソリューションを紹介します。
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; }
使用法:
このソリューションを利用するには、 CSS ファイルの内容を変数に取り込みます。次に、ファイルの内容を引数として parse() 関数を呼び出します。この関数は、必要なクラス名をキーとして、そのルールを値として含む配列を返します。例:
$css = parse('css/'.$user['blog'].'.php'); $css['#selector']['color'];
このアプローチにより、CSS ファイルのより動的で的を絞った解析が可能になり、さまざまな解析要件に柔軟に対応できます。
以上がPHP で特定の CSS クラスを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。