I want to parse (in a special way) a CSS file with PHP.
Example:
cssfile.css
:
#stuff {
background-color: red;
}
#content.postclass-subcontent {
background-color: red;
}
#content2.postclass-subcontent2 {
background-color: red;
}
And I want that PHP returns me each class name that have the postclass in its name.
The result look like an array having in this example:
arrayentry1:
#content.postclass-subcontent
arrayentry2:
#content2.postclass-subcontent2
But I'm worse at regular expressions. somehow search for "postclass" and then grap the hole line and put into an array.
thank you and i used it to parse a css file simliar to a confic file.
$(function () {
$.get('main.css', function (data) {
data = data.match(/(#[a-z0-9]*?\ .?postclass.*?)\s?\{/g);
if (data) {
$.each(data, function (index, value) {
value = value.substring(0, value.length - 2);
$(value.split(' .')[0]).wrapInner('<div class="' + value.split('.')[1] + '" />');
});
}
});
});
was my final code. so i can wrap easily a div around some hardcode-html without editing the layout. so i just have to edit my cssfile and add there something like
id .postclass-class { some styles }
and my code searchs for the id and wraps the inner content with an div. i needed that for quickfixes when i just have to add a div around something for a clear or a background.
There is a very good CSS parser class in PHP. Use it. Here is its sample code:
Here is a quick and dirty standalone hack using regex:
Results in:
I found a solution:
use:
//see its same
Just for completeness there is also another library for parsing CSS: sabberworm / PHP-CSS-Parser.
Homepage: http://www.sabberworm.com/blog/2010/6/10/php-css-parser
GitHub: http://github.com/sabberworm/PHP-CSS-Parser
Gist: http://packagist.org/packages/sabberworm/php-css-parser
Last update: May 31, 2017 (Stating this because the date in the blog entry may mislead you that it isn't updated anymore.)
Unfortunately this project is bit too robust. From quite simple CSS creates very chatty structure. Also before first use you have to deal with composer (I myself did end-up adding require_once for each file into parser.php).
In addition to Gabriel Anderson's answer to handle css @media queries, child selector
>
,base64 images, andinput[type="button"]:hover
Resources
Gists -> https://gist.github.com/rafasashi/92ea1422c599faae5334
Repos -> https://github.com/recuweb-source/php-dom-scraper