日: 2008年7月11日

ドコモのCSSをインラインに埋め込んでくれるPHPライブラリ「toInlineCSSDoCoMo」

 toInlineCSSDoCoMo.tar.gz

HTML::DoCoMoCSS (こっちは元になったPERL版)

 http://ke-tai.org/blog/2008/07/09/toinline/ (記事はこちら:KE-TAI.ORGさん参照) 

インストールは簡単。

# pear install HTML_CSS

で、必要なPEARライブラリをインストールして、ダウンロードしたファイルを展開するだけ。
中に入っている「sample.php」にアクセスすれば、サンプルが表示されるらしい。

require_once ‘../lib/toInlineCSSDoCoMo.php’;

$document = file_get_contents(‘sample.html’);
try {
echo toInlineCSSDoCoMo::getInstance()->setBaseDir(‘./’)->apply($document);
} catch (RuntimeException $e) {
var_dump($e);
} catch (Exception $e) {
var_dump($e->getMessage());
}
?>

以下、仕様の説明。(ゆどうふブログさん(http://d.hatena.ne.jp/Yudoufu/20080709/1215626811)

toInlineCSSDoCoMoの仕様なんですが、はてブとかで「外部参照をインライン化」だと思ってる人とかがいるみたいなので言っとくと、外部参照だけじゃなくて内部参照のsytleタグもよしなにパースしてくれます。

外部参照やstyleタグ指定が複数あってもそれらを全てsytle要素に突っ込んでくれるので、定義が多段になってる状態でもきちんとできます。sytle要素が個別に定義してあるタグでも、ちゃんとマージします。

無論、class指定が複数記述してあっても、*1全部適用します。
 

また、パースし終わった外部参照・内部参照のlinkタグ・styleタグは除去されるので、通常ブラウザベースで開発を行っていても、ざっくりとしたデザインの確認に支障が出ることはありません*2。(除去されないと、専用エミュレータか実機での確認が必要)*3

あと子孫セレクタとかその辺は、結構ちゃんとやってくれます。ただ、ブログにも書いたとおり疑似クラスはa:link,・・・の4つしか対応してません。

一応、それらの疑似クラスは全部内部参照としてCDATAつけてstyleタグに突っ込むようになっています。*4

それ以外はDoCoMoではどのみち無効ということもあって無視しています。

このあたりは、携帯のCSSだし、元々あんまり使ってる人いないようなので、ひとまずざっくり仕様で。