• ベストアンサー

PHPによるHTMLの解析

現在、PHPを使ってWebページをタグの深さと数で分割する研究を行っています。 そこで、質問なんですが、 コンテンツをテキスト、画像、アンカーの3つと定義したとき そのコンテンツが置いてあるところまでのタグの数と深さを出したいのですが、どのようにプログラムすればいいでしょうか? ソースを文字列いれるところまではできたのですが・・ 漠然とした質問となってしまい申し訳ありません。 アドバイスだけでもいいのでよろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
noname#233004
noname#233004
回答No.2

「PHP Simple HTML DOM Parser」を使えば実現できるかも...

参考URL:
http://simplehtmldom.sourceforge.net/
montan113
質問者

お礼

これいいですね!! やってみます!! 返信ありがとうございました><

montan113
質問者

補足

【PHP】HTML Parserを使ってHTMLをパースすることによって  できるようになりました。 http://blog.funkychicken.info/?eid=973454

その他の回答 (1)

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

かなり難しいので、レスは付かないかも.... HTMLをパースするヘルパークラスがいろいろありますから、それで試されてはどうですか?

montan113
質問者

お礼

返信ありがとうございます。 質問する側の私自身把握できていない部分が多すぎて質問が漠然とした内容になってしまいました。 わからないところをもっと絞ってから質問するべきでした。 アドバイスありがとうございました。

関連するQ&A

  • 複数PHPプログラムのHTML埋め込みについて

    お世話になります。 1ページ内に複数のincludeタグを使ってphpプログラムを読み込んでおりますが、ある一つのincludeタグ以降から、結果がつられて表示されてしまいます。 つまり、【図A】の通り一つのページ内に5つのphpを埋め込んでいますが、いざ出力結果を見てみると、【図B】の通り002.php以降が全て002.phpの結果になってしまいます。 尚、5つの各phpは、ランダムで文字列を表示させるphpプログラムです。 【図A】 <html> <body> <? include(\"001.php\"); ?> <? include(\"002.php\"); ?> <? include(\"003.php\"); ?> <? include(\"004.php\"); ?> <? include(\"005.php\"); ?> </body> </html> 【図B】 <html> <body> 001.phpの結果 002.phpの結果 002.phpの結果 002.phpの結果 002.phpの結果 </body> </html> PHPにお詳しい方、是非ご教授頂けると大変助かります。 何卒宜しくお願い致します。

    • 締切済み
    • PHP
  • phpで正規表現を用いて、一定の文字数を超えて出てくる任意の文字のところで文字列を分割する方法を教えてください。

    すいません質問です。 某掲示板で質問させていただき、返事をもらいましたが、 答えがわからなかったためここで質問させてもらいます。 今運営しているPCサイトの携帯版を作ろうと思っています。 携帯用にするとき、元のサイトのサイズが大きいため分割する必要があると思い自分なりにやってみましたが、 分割のやり方が悪いため、htmlタグの途中で切れたりして変になってしまいます。 //1ページあたりの文字数(ページのサイズ) $pagesize=1000; 元の文字列をページサイズで割り、合計のページ数を出す $totalpage=ceil($str/$pagesize); //↓1ページ目の場合は、テキストが0~1000までの部分文字列になる $text=mb_substr($str,($page-1)*$pagesize,$pagesize); 上記のようにやってみたのですが、下記のようになったりします。 ---------------------------------------------------- nページ目のテキスト終わり部分 ・・・・・・・・ <a href="http: --------------------------------------------------- n+1ページ目のテキスト始め部分 "//hoge.com">ホゲドットコム</a> --------------------------------------------------- タグの部分で分割させないためには、 1000文字を超えたところで一番最初に出てくる \n で分割したりすればいいと思うのですが、 それはどのようにやればいいのでしょうか。 アドバイスお願いします。 ___________________________________________________________ 上記のように質問させていただきました すると ↓のようなレスをいただきました。 正規表現で分割 /^.{1000}.*?\n/s  ____________________________________________________________ そこで ↓1000はページサイズ print_r(preg_split("/^.{1000}.*?\n/s",$str)); とやってみましたが、 [1]の部分に全部はいってしまい、分割されていません。 どうすればいいのでしょうか 助けてください。

    • 締切済み
    • PHP
  • HTML5 Videoタグ

    下記、ご質問があります。 VIdeoタグを用いて、動画をWebページに貼りつけたいのですが、 動画をダウンロードされたくありません。 これはコンテンツの保護などは出来るのでしょうか?? 宜しくお願いします。

    • ベストアンサー
    • HTML
  • アクセスログ解析ソフトについて

     社内のWEBサーバで、各コンテンツページの アクセスログ(アクセス数)の一覧表示をフリーの CGI(KENT WEBさんのLime Counter)を利用して 実施していますが、ファイルロック機能が効かない(symlink関数がWindows2000serverだと使えない) ので、同時アクセス時にログが複数できて カウンタ数値が少ない方の値に減ってしまうという 事象があり、こちらでは使えません。 他の、アクセスログ一覧(コンテンツカウンタ表示) ができるようなCGIやASP(できればフリー) のものか市販ソフトでWEB上で各ページのアクセス数をグラフ等で表示ができ、設定が難しくないもの 等、代替のものを探しております。 なお、CGIについては、Lime Counterのように TOPページのリンク先に、CGIタグを埋め込む 方法を使うものでないと駄目なのです。 各コンテンツは各々担当で作成しておりますので CGIタグを各ページに入れる方法だと、管理が 難しくなるので、事務局として一括でTOPページ にCGIタグを入れて、TOPページからのリンク 先コンテンツの個別アクセス数を表示したいのです。 どれがいいでしょうか?(市販ソフト又はCGI等) 教えてください

  • Javascriptで表示のページをPHPで読む

    Javascriptを使って表示されているウェブのコンテンツをPHPで読み込む方法について教えてください。 HTMLで作られている場合は「file_get_contents」でHTMLソースを取得できますが、Javascriptを使って表示されたページのソースを読み込むにはどのようにしたらよいのでしょうか。 読み込みたいページは下記のような構造になっています。 <html> <head> </head> <body> <h2>タイトル</h2> //ここのコンテンツ部分がJavascriptをONにしないと見えない。 </body> </html>

    • ベストアンサー
    • PHP
  • phpで二重書込みできないプログラムを作りたい

    PHP初心者です。 テキストファイルに、ある文字列を書き込むプログラムを作ろうとしています。 ファイル内容に同じ文字列があれば書き込まず、 同じ文字列が無ければファイルに書き込むという プログラムを作りたいのですが、 うまくいきません。 どなたかアドバイスをお願いします。 <?php $name = "文字列"; $fp = @fopen("file.txt", "r"); $contents = @file_get_contents($fp); if(ereg($name, $contents)) { print "登録済みです。" ; } else { $fpa = @fopen("file.txt", "a"); fputs($fpa, "$name\n"); fclose($fpa); print "登録しました。"; } fclose($fp); ?>

    • 締切済み
    • PHP
  • 携帯向けのPHPについて

    広告のリンクなどを複数のページに表示させていると、その広告を張り替えたいとき変更が大変です。フォルダを指定すると文字列を一括して変換してくれるソフトなどもありますが、結局すべてのファイルをアップロードしなくてはいけないので、結構つらいです。 そこで質問なのですが、PHPなどのプログラム側に表示したい文字を入れて、表示したいページの表示したい部分にタグを入れるとその文字を表示してくれる・・・というプログラムはありませんか?? もしご存知でしたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 文字分割で配列に。

    こんにちは。 先日よりPHPにて文字列を分割し配列する事に悩んでいます。 質問内容としましては、 $str = "文字","1,2,3","テキスト" を Array ( [0] => 文字" [1] => "1,2,3" [2] => "テキスト" ) の様に配列にしたいと思っています。 今までは、sprit(",", $str) で分割していましたが、PHP 5.3.0 で 非推奨となったことで explode(",", $str) に変更。 その後今回の様なデータは無く問題ありませんでしたが、新しくデータを読み込みした時、ダブルクォートの中にコンマがあり、 Array ( [0] => 文字" [1] => "1 [2] => 2 [3] => 3" [4] => "テキスト") と分割され、エラーとなりました。 色々、「Sprit」「PHP 分割 ダブルクォーテーション」等で検索しているにも関わらず、希望の情報がヒットしませんでした。 改善方法若しくは情報の記載されておりますサイトがあればご誘導いただければ幸いです。 初歩的な質問かと思いますが、お願い致します。 サーバの種類: MySQL サーバのバージョン: 5.5.42 - Source distribution PHP/5.6.10

    • ベストアンサー
    • PHP
  • PHPで<BR>をいれずにすみますか?

    こんにちわ。 PHPで一つのページを3つの要素からインクルードして構成しています。 top、text、bottomでtxetはコンテンツの内容をあらわした文字のみのものです。 残りの二つはページの上部分と下部分をテンプレートとして用意している使い回し的なものです。 text部分は日記のような内容ですが、どうしても改行の<br>のみがファイルに記入しなければならずそこを改善したいと思っています。 できれば、メモ帳で書いた日記はそのまま改行された部分はwebでも改行される様にはできないでしょうか? そうすることができれば、テンプレート以外の部分はタグを書かずにすみ今後の作業が軽減されるのですが。知恵を借りることができれば幸いです。

    • ベストアンサー
    • PHP
  • PHPファイルに関係あり??コンテンツの一部が消えてしまった…

    お世話になっております。 とても困っております。。 PHPで作成されたお問い合わせフォーム設置用webページの一部が、現在下記のようなソースになっています。 <div id="secright"> <div class="secmenu"> </div> <!-- secmenu end--> <br /><br /><br /> </div> <!-- rightcontent end--> しかし、<!-- secmenu end-->と、</div><!-- rightcontent end-->の間にあったコンテンツ(バナーを並べたもの)が、webで公開しているときはそれらのバナーが表示されていたのに、このPHPファイルをダウンロードして見てみるとソース自体が消えているのです。 PHPに関して知識がございません… こんなことってありうるのでしょうか。今現在web公開されているPHPファイルはアップロードし直してしまったものであるため、バナー群が表示されているwebページ(PHPファイル)のソースを見ることももう出来ません。 なお、現在の、ソースが消えてしまったPHPファイルを修正してバナー群を掲載させたい場合は、このPHPファイルの上記に貼り付けたソース部分を直すだけで直るものなのでしょうか。。。 たぶん分かりづらい質問だと思います。申し訳ございません。なにかアドバイス頂ければと思います。よろしくお願い致します。

専門家に質問してみよう