- ベストアンサー
HTMLファイルからCSSファイル名を取得
お世話になります。 HTMLファイル内に記述してあるCSSファイル名を取得する処理を 考えています。 イメージ的にはHTMLファイルに記述してあるCSSファイル名だけを 取得して配列に記録したいのですが、preg_match()関数で指定する とcssファイル名以外も一緒になってしまって・・・ QNo.2562316を参考に正規表現は指定していますが、上手くいきません。 よくありそうな処理なので、参考になるURLなどを教えて 頂けたら幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
大雑把ですが… 1.file_get_contents() とかで読み込む。 2.正規表現でパターンを書きやすいように、連続する空白や、改行をどうにかする。 までやると、 $link = '<link rel="stylesheet" type="text/css" href="file.css" title="title" />'; これ位なものが取れるのでは?と思います。 1.は、file() で取得じゃ、途中で改行してたりしてだめだと思う。 2.は、例えば $combined = preg_replace( '#\s+#', ' ', preg_replace( '#\015\012|\015|\012#', ' ', $string ) ); な感じでしょうか。 >preg_match()関数で指定するとcssファイル名以外も一緒になってしまって・・・ 多分、リンク・タグを得るまでは、出来てると思います。 なので、パターンがおかしいのかな?と思いますが… 上に書いた「$link」を取得できたとして、 ---------- $link = '<link rel="stylesheet" type="text/css" href="file.css" title="title" />'; $link_attributes = array (); preg_match( '#<link (.*)>#', $link, $matches ); foreach ( explode( ' ', $matches[ 1 ] ) as $i => $str ) { list ( $key, $value ) = explode( '=', $str ); $link_attributes[ $key ] = trim( $value, '"' ); } echo ( $link_attributes[ 'href' ] ); ---------- 足らないところ、直してください。
お礼
早速のお返事ありがとうございます。 回答して頂いた内容で試した所、なんとか動くようになりました。 preg_matchと正規表現だけでやろうとしていた事が、間違っていた 気がします。 複数のCSSファイルが指定してあった場合の処理も、preg_match_allで なんとかなりそうです。 ありがとうございました。