• ベストアンサー

HTMLファイルからCSSファイル名を取得

お世話になります。 HTMLファイル内に記述してあるCSSファイル名を取得する処理を 考えています。 イメージ的にはHTMLファイルに記述してあるCSSファイル名だけを 取得して配列に記録したいのですが、preg_match()関数で指定する とcssファイル名以外も一緒になってしまって・・・  QNo.2562316を参考に正規表現は指定していますが、上手くいきません。 よくありそうな処理なので、参考になるURLなどを教えて 頂けたら幸いです。

  • ajyak
  • お礼率33% (2/6)
  • PHP
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • juri_a
  • ベストアンサー率50% (3/6)
回答No.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' ] ); ---------- 足らないところ、直してください。

ajyak
質問者

お礼

早速のお返事ありがとうございます。 回答して頂いた内容で試した所、なんとか動くようになりました。 preg_matchと正規表現だけでやろうとしていた事が、間違っていた 気がします。 複数のCSSファイルが指定してあった場合の処理も、preg_match_allで なんとかなりそうです。 ありがとうございました。

関連するQ&A

  • 外部CSSが読み込めません/HTML

    HTMLにおいて、外部CSSを読み込めず困っております。 ググって対処法を実践しても一切反映されません。 現在下記のisaraというサイトを模写しております。 https://isara.life/ HTMLにおいて linkタグでCSSファイルを読み込んだのですがCSSが一切反映されず困っております。 HTMLとCSSファイルは同一フォルダ内にあります。 HTMLファイル名:isaramosya.html CSSファイル名:isaramosya.css HTMLの記述 <link rel=”stylesheet” href="isaramosya.css"> いくらググっても原因がわからず困っております。 原因思い当たる方いらっしゃいましたらお答えいただけましたら幸いです。

    • ベストアンサー
    • CSS
  • javascriptでフォルダ内のファイル名を検索して取得できますか?

    javascript初心者です。宜しくお願いします。 javascriptでフォルダ内のファイル名を検索して取得することは できるのでしょうか? 一応、本やネットで調べてみたんですが そういった記述は見つかりませんでした。 やりたい事のイメージとしては HPに表示させたHTMLファイル名クリックしたら そのHTMLファイルに飛ぶといった処理をHTMLで記述するのではなく、 javascriptでそのファイル名を自動で取得してそれをHP上に表示させたいのです。 いちいちHTMLでファイル名を書いてリンクさせるのが面倒なので そこを自動化できないかと考えたわけですが これはjavascriptでできるでしょうか? 回答宜しくお願いします。

  • 特定のサイトからの情報の取得について

    現在、許可を得て、あるサイトから商品名等の情報を取得しております。 取得方法といたしましては、API等がないため、PHP cURL関数を用いて、ページ情報を取得し、 preg_match関数を使い、タグにより正規化して必要な情報を取得しております。 しかし、この方法ですと、サイトがリニューアルするごとにpreg_match関数の正規化の部分の改修が必要となっております。 サイトがリニューアルした場合でもpreg_match関数の正規化の部分の改修が発生しないような方法はございませんでしょうか。 ※固定のタグ、idやclass名などをつけることは難しい状態です。 cURL関数を用いない方法等がございましたら、その方法もご教授いただきたいです。 ご存知の方がいらっしゃいましたら、ご教授をお願いいたします。

    • ベストアンサー
    • PHP
  • 外部CSSが反映されるHTMLとされないHTML

    レンタルサーバのファイルマネージャを使ってサイトを作っています。 外部CSSで文字のフォントをMS Pゴシックに統一したいのですが、反映されるページとされないページができました。 CSSには、 @charset "Shift_JIS"; p { font-family: "MS Pゴシック",sans-serif; } 読み込みには、 <link href="./style.css" rel="stylesheet" type="text/css"> と記述しました。 反映されたのはサイト2ページ目の2分割フレームの片側だけで、その他のページはブラウザで指定したフォントのままCSSが反映しません。 HTML、CSS共に文字コードはShift_JISで統一していて、それぞれ<head></head>間の同じ位置に記述してあります。 反映されたHTML内にはボックスの幅指定でCSSを使っていますが、その他のページにはCSSを使っていません。違いはこれだと思うのですが、それがきっかけで反映されたりされなかったりと変わるものなのでしょうか? HTML、CSS共に初心者です。この質問が初歩的なことなのか難しいことなのかもわかりません。 よろしくお願いします。

  • DWでCSSの記述がどのファイルにあるか調べたい

    DreamWeaverCS5を使っています。 HTMLのソースにclass="test" というCSSの記述があるとします。 このtestが記述してあるCSSファイルをどうやって探すことができますか? CSSファイルが一枚ならすぐわかるかと思いますが、 たとえば、CSSファイルが10枚あったとき「class="test"」の 記述してあるCSSファイルはどうやって探すのでしょうか?

  • CSS&HTML

    はじめまして、こんばんは ご質問です。 今htmlとCSSを使いHPを作成いたしています。 二段コラムの雛型にあてはめています。 メインコラムに ボックスを指定いたしたいのですが 上手く作成できません。<div id=main> </div>の中にタグは入れられますか?   mainはCSS HTML記述が終わっています。 幅 200 高さ100ぐらいのBOXボーダーラインで囲み 作成いたしたいのですがどうすれば出来ますか ボックスのタイトルをH3にしたいのですが CSSHTMLどう記述すれば いいのでしょうか ご指導ください 私がやりますとレイアウトが崩れます。

  • HTMLタグだけにマッチする正規表現を知りたい

    <td align="right" nowrap>12,345</td><td align="right" nowrap>234,567</td><td align="right" nowrap>456,789</td> といったHTML文から正規表現で数字の部分だけ抜き出して、配列に格納したいのです。 イメージとしては $matchs[0] = 12,345 $matchs[1] = 234,567 $matchs[2] = 456,789 となります。 当方で、書籍を参考に preg_match("/<td align=\"right\" nowrap>/i", $line); と正規表現を書いてみたのですが全然ヒットしません。 正しい書き方があるのでしょうか?

    • ベストアンサー
    • PHP
  • 、"(ダブルクォーテーション)で囲まれている文字列を正規表現で取得

    質問させてください。 abcdef -s "xsalkjsdflsd#$%_asdasdlasdlakjsd&=Daskdjh" asdakjsd のような文字列があります。 これの、"(ダブルクォーテーション)で囲まれている文字列を取得したいのですが、正規表現がうまくいきません。 取得結果としてはは、xsalkjsdflsd#$%_asdasdlasdlakjsd&=Daskdjh の部分がほしいです。 preg_match('/"([.*])"/', $str, $matches);とやったり preg_match('/\"([.*])\"/', $str, $matches);とやったり preg_match('/\"([.*?])\"/', $str, $matches);とやったりしたのですが、 どうしても$matchesにほしい結果は入っていません。 どのような正規表現で取得可能でしょうか? 何卒ご教授ください。

    • ベストアンサー
    • PHP
  • CSSファイルの作り方

    市販の書籍を参考にHTMLとCSSの練習を始めたのですが、 第一章で早速つまづいてしまいました。 書籍には、ファイル名の拡張子を「css」にするとCSSファイルになるとありますが、どうも私のPCではそうはなりません。 書籍にはCSSファイルは歯車のついたアイコンで表示されていますが、私のPCではウィンドウのアイコン(認識できないファイルのときのアイコンです)で表示されます。 拡張子は「CSS」になっています。 windows上でなにか設定しないとスタイルシートのファイルは認識されないのでしょうか? それともCSSファイルを使用するには、なにか別の特別なものが(ドライバのようなもの)必要なのでしょうか?

  • CSSファイルが見当らないclass名があり、しかもCSSが効いています。どこにあるんでしょうか?

    tableのtdやthの背景にうまく画像が入っていてうまいつくりがあったので、方法を調べようとしてソースを見て、CSSファイルを調べるのですが、該当のclass名が検索しても存在しないのです。こんなこと初めてです。 なのにちゃんとCSSは効いています。HTMLソースには記述という記述がないので、どう考えても外部スタイルシートとしか思えないのですが・・・ JavaScriptで操作しているのか?と思ってそのあたりも見はしたのですがわかりませんでした。 以下のURLです。 ※ちなみに「比べてください!圧倒的なコストパフォーマンス」というところの表のように、背景画像や2ピクセルでの区切り線、tdやthによって背景画像や色を変更している手法などを知りたいものです。 http://www.rensaba.com/campaign/ocssl/ とりあえず、tableタグにある「class="comparison"」が見当たらないのです。 このソースにかかれてあるCSSファイルは複数ありますが、全て検索かけてみたのですがひとつも出てきませんでした・・・・ この表の作り方だけでなく、いったいどうやって効かせているのかも知りたいです。 宜しくお願い致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう