PHP CSS Parser
I’ve spent hours online looking for a CSS parser to use with PHP but all searches came up empty, half-assed or required me to register with some strange sites. Frustrated, I decided to write my own parser which is pretty much working but very incomplete. I don’t know whether this will be another write-once, update-never thing like much other PHP code on the web is but one feature is definitely coming: The ability to generate output from the parsed structure (which can be programmatically modified after parsing – or indeed have been created from scratch in PHP).
Some other features are planned as well but if no-one else is willing to work on them, them ever getting implemented will depend on whether I myself need them at some point.
Without much further ado; here it is: http://github.com/sabberworm/PHP-CSS-Parser.
Update: Changed from a gist into a full-blown GitHub repository.
Allison Allain at 08/23/10:
I love you app, and am an iPhone programmer. Is there any way that I can be of service?
Elod Molnar at 10/20/10:
Hello! At github, I don't know how, you didn't returned $aColor at parseColorValue() Best regards, Előd
Raphael at 11/18/10:
Thanks for the hint, Előd. It’s fixed now and I’ll write the unit tests for it soon.
CSJakharia at 02/06/11:
It did not worked on jquery-ui.css. Is there any forum or any such thing where I can post the stuff? jQueryUi.css is there at http://pastebin.com/qYRQyRQi Error Fatal error: Uncaught exception 'Exception' with message 'Identifier expected, got (Opac' in \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php:98 Stack trace: #0 \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php(237): CSSParser->parseIdentifier() #1 \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php(206): CSSParser->parseValue() #2 \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php(194): CSSParser->parseRule() #3 \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php(188): CSSParser->parseRuleSet(Object(CSSSelector)) #4 \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php(50): CSSParser->parseSelector() #5 in \sabberworm-PHP-CSS-Parser-c779825\CSSParser.php on line 98
Thanks in advance CSJakharia
Roger at 03/16/11:
What license is this code under? Would you mind emailing me?
forex reviews at 04/10/11:
This really solved my problem, thank you!
Mark at 10/30/11:
Thanks for this parser. I was hoping if you could help me. I want to open my main CCS file (main.css) and have it read all of the imported files? @import url('../styles/global/reset.css'); @import url('/styles/themes/helloWorld/structure.css'); @import url('/styles/themes/helloWorld/presentation.css'); The documentation says to: use getContents(), then iterate over that collection and use instanceof to check whether you’re dealing with another CSSImport This is what I have: $oCssParser = new CSSParser(file_get_contents('main.css')); $oCssDocument = $oCssParser->parse(); getContents($oCssDocument); Any chance you would be willing to provide some more assistance? THX
Raphael at 11/07/11:
Hi Mark, have a look at ju1ius’ work. This fork has added the ability to resolve @import statements. Sincerely, Raphael
Andrew at 05/11/12:
It's breaking on one of the CSS files from facebooks unsupported browser page, it goes into an infinite loop on the private parseList() method.
Praise at 08/11/12:
Is a good thing ! Thanks :-)