2016-03-26 5 views
1

カスタムアイコン用のCSSファイルがあります。クラス名とコンテンツの値を抽出したいと思います。PHPを使用してcssファイルからアイコンクラス名とそのコンテンツ値を抽出するにはどうすればよいですか?

CSSファイルには、これらのように、ほとんどのラインを持っている:

.my-icon-bus:before { content: '\e820'; } /* '' */ 
.my-icon-tools:before { content: '\e821'; } /* '' */ 
.my-icon-science:before { content: '\e822'; } /* '' */ 
.my-icon-quotes:before { content: '\e823'; } /* '' */ 
.my-icon-printer:before { content: '\e827'; } /* '' */ 

私は、以下の正規表現パターンでregex101.comを試してみましたが、それが正常に動作します - それはhere作業参照、クラス名とその内容コードを返すが、私がpreg_match_allを使ってPHPから同じことをしようとすると、それは何も一致しません。ここで

\.(my-icon-\w+):before\s*{\s*content:\s*(["']\\\w+["']); 

は私のPHPコードがうまくいけばそこにあなた正規表現達人の一つは、私がこれを理解することができ、です。

$css = file_get_contents('/path/to/my/css/file/my-icon.css'); 

preg_match_all('/\.(my-icon-\w+):before\s*{\s*content:\s*(["\']\\\w+["\']);/s', $css, $matches); 
var_dump($matches); 

誰かが不思議なことがある場合、変数$ cssにはCSSファイルの内容が含まれています。

お手数ですがお寄せいただきありがとうございます。

答えて

1
/\\.(my-icon-\\w+):before\\s*{\\s*content:\\s*([\"']\\\\\\w+[\"']);/s 

お知らせ列/\\. (ダブルバックスラッシュ)の始まり、それが正常に動作します。

+0

実際には動作しませんでしたが、正しい方向に私を指していました。つまり、あるバックスラッシュを追加したり削除したりして、ついにそれが動作するようになったのです。/ \。(my-icon - [ - 何らかの理由で私はコンテンツに5つのバックスラッシュを使用しなければなりませんでした(w "+):\ s *の前に\ s * content:\ s *([" '] \\\\\ w + ["']コード...ありがとう、GR Vitally – andrux

+0

実際には、regex101.comでコードジェネレータがあり、そこで動作する場合は、あなたの側で動作するはずです。私はスニペットから見ることができるように、始めに二重スラッシュをすべて指摘しましたが、もっと多くのバックスラッシュがあります... –

関連する問題