アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
HTMLファイル内に記述してあるCSSファイル名を取得する処理を
考えています。

イメージ的にはHTMLファイルに記述してあるCSSファイル名だけを
取得して配列に記録したいのですが、preg_match()関数で指定する
とcssファイル名以外も一緒になってしまって・・・ 

QNo.2562316を参考に正規表現は指定していますが、上手くいきません。
よくありそうな処理なので、参考になるURLなどを教えて
頂けたら幸いです。

A 回答 (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' ] );
----------
足らないところ、直してください。
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。
回答して頂いた内容で試した所、なんとか動くようになりました。
preg_matchと正規表現だけでやろうとしていた事が、間違っていた
気がします。

複数のCSSファイルが指定してあった場合の処理も、preg_match_allで
なんとかなりそうです。

ありがとうございました。

お礼日時:2008/01/14 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!