• ベストアンサー

ページのhtmlから任意のタグの要素を所得したい

PHPをはじめたばかりのものです。 指定したページのhtmlのタグから要素を取得したいです。 たとえば<name>タグと指定すれば、 そのぺージの全ての<name>タグの要素を 配列に入れて取得できるような感じです。 調べても、 getElementsByTagName ←こういうのが出てきたりするのですが 使い方がよくわかりません。。 ご存知の方いらっしゃいましたら、 何卒よろしくお願いいたします。

noname#179453
noname#179453
  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • 1minn
  • ベストアンサー率57% (52/90)
回答No.1

// HTMLファイルを取得 $file = file(abc.html); // HTMLファイルの行数を習得 $cnt = count( $file ); // カウンタ $i = 0; // 抜き出した要素を格納する $str = array(); // 行数分ループして欲しい要素を探す while ( $i < $cnt ) {   // 要素の位置を取得   $pos = strstr($file[ $i ], '<name>' );   // 要素を見つけたら抜き出す   if ( $pos !== false ) {     // タグの終りの位置を見つける     $endPos = $pos = strstr($file[ $i ], '</name>' );     // 開始位置から終了位置まで抜き出す     $str[] = substr( $file[ $i ], $pos, $endPos-$pos );   } } これだと同じ行に開始タグと終了タグがないとうまくいきません。 また、要素の取得位置にタグも含まれると思うので調整が必要です。 書いてて途中でしんどくなったので、ここらへんまでで・・・ あとはご自分で。 ちなみに > 調べても、 > getElementsByTagName ←こういうのが出てきたりするのですが > 使い方がよくわかりません。。 Javascriptですよそれ。

関連するQ&A

  • jQueryでxmlの異なるタグ要素を取得したい。

    jQueryを最近勉強したての者です。 詳しい方、どうか教えて下さい。 HTMLにxmlのデータを読み込ませようとしています。 概略をお話しすると、 htmlファイルによって、xmlの別々の要素を取得したいのです。 やりたいメソッドは同じです。 別々の要素の中のデータによって、imgの表示/非表示を切り替えたいのです。 問題は、対象となるhtmlファイルが複数あり そのhtmlファイルによって、参照するxmlのタグが異なる事なんです。 xmlは、以下のように<shopdata>をルートノードとし、以下のような感じです。 --------------------- <?xml version="1.0" encoding="utf-8"?> <shopdata> <item> <name1>0</name1> <name2>1</name2> <name3>0</name3> </item> </shopdata> --------------------- <name*>~</name*> の中のデータは、0もしくは1なのですが 0の時はimgを表示 1の時はimgを非表示させようと考えています。 ただ<name1><name2><name3> とタグ名がバラバラなんです。 ※おしりの数字が違うだけで、規則的ではあります。 ちなみにhtmlは複数あって  a.htmlの時は→xmlの<name1>を参照  b.htmlの時は→xmlの<name2>を参照  c.htmlの時は→xmlの<name3>を参照 という感じです。 ※htmlファイル名は特に規則的ではなく、いろいろなファイル名がついています。。。 最初、考えたのは、 htmlのどこかに、id="1"と入れて、idが1の時は、<name1>の要素を取得し、 htmlのどこかに、id="2"と入れて、idが2の時は、<name2>の要素を取得し… っていうことを考えたのですが、それもどのように書いたら良いのかが分からないんです。 そもそも、そういった事は可能なのでしょうか? ちなみのhtmlのbodyタグ自体がテンプレートでできているので、 idをどこかにふるとしたら、head内とかになるのしょうか? それぞれ、ボタンの表示は、 if文を使って、show(),hide()メソッドを使うとは思うのですが… 詳しくコードを教えていただけたら、助かります。 どうか、宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • phpのSimpleXMLでXMLの要素を参照したい。

    フォームからキーワードを受け取り、それを、xmlを参照しながらphpで出力したいのですが、最後の最後でつまずきます。 ------------------ <?php $doc = new domDocument(); // DOMDocumentオブジェクトにより、インスタンスを生成 $doc->load("./beta.xml"); // ファイルからXML文書を読みこむ $kywd = $_REQUEST['kywd']; // フォームからデータを受け取る $nodelist = $doc->getElementsByTagName('keyword'); // 指定した要素名(keyword)の全ての要素を取得 foreach ($nodelist as $node) { // 各要素を参照 if($kywd == $node->textContent){ // もし、フォームから受け取ったデータが要素と一致したら $xurl = $node->namespaceURI; // 要素の名前空間URLを取得して$xurlに代入 $xml = simplexml_load_file("./beta.xml"); // SimpleXMLによってXMLファイルをパースし、simplexml_elementオブジェクトを作成する $parent = $xml->children("$xurl"); // 指定したノードの子ノードの配列を取得 $hairetsu = $parent[0]->children("$xurl"); //取得した配列素$hairetsuに代入 foreach($hairetsu as $key=>$value) { // ちゃんと連想配列になっているか、ためしに出力 print ($key."→".$value."<br />"); } // 連想配列になっていることを確認 print $hairetsu["title"]; // しかし、キーを指定して値を取得しようとすると、なぜか得られない。 } } ?> 問題は最後のほうです。連想配列になっていることは確かに確認できる(titleというキーも、その値もある)のですが、連想配列のキーから値を参照しようとすると、なぜか値がNULLになっていて表示できません。私は趣味でプログラミングをする程度なので、おそらく基本的なところで間違っているのだと思いますが、それがどこだか分かりません。お教え願えないでしょうか。

    • ベストアンサー
    • PHP
  • ずっと悩んでます。特定タグを子要素を含め取得したい

    ずっと悩んでなかなか解決できません。特定タグを子要素を含め取得したいのですが... 例えば以下のタグがあるとして <div id="1">a<div id="2">b<div id="3">cc</div>b</div>a</div> 特定タグを子要素を含め取得して、それを配列に格納。配列の中は [0] <div id="1">a<div id="2">b<div id="3">cc</div>b</div>a</div> [1] <div id="2">b<div id="3">cc</div>b</div> [2] <div id="3">cc</div> このような配列の結果がでる動作方法はどうやればいいのでしょうか? 正規表現を使ってやろうとしてますが、自分のレベルでは難しくてできません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 空要素タグは/>で閉じてはいけないのですか?

    空要素タグは/>で閉じてはいけないのですか? <img src="URL" alt"説明" />をAnother HTML-lintでチェックをしてみたのですけど、 「XHTML以外では、空要素タグを /> で閉じることはできません。」と出てきました。 FC2ブログを使ってるんですけど、テンプレートのメタタグとかには全て/>が入っていました。 空要素の/>はやめた方がいいのでしょうか。

    • ベストアンサー
    • HTML
  • Formタグ内にあるテキストボックスのname取得

    HTMLページ内に、Formタグがいくつかあって、その中にテキストボックスが一つずつ配置されています。 ページをロードしたときに、そのテキストボックスのnameを取得してそのnameに基づいた処理をしたいと思っています。 Fromタグはページ内にいくつあるか決まっていません。 nameも取得しないとどういうnameがあるか分からない状態です。 name取得が出来るのかが分からないのですが、ここ数日ずっとネットで検索していたのですが見つからず、取得方法がご存じの方、教えて頂けませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • HTMLページ内のタグに対してのイベント

    HTMLページ内のタグに対してのイベント getElementsByTagNameで指定したタグの部分(画像やリンク)をクリックすると関数を呼び出すという動作をやりたいのですが、どうも上手くいきません。 試しに下記のようなプログラムを作ってみたのですが、ページを表示した後すぐにalert関数が呼び出されてしまいます。 あるタグの部分を押したときに関数を呼び出すというやり方を知っている方がおられましたら、ご教授願います。 ひとつひとつにIDを割り当てるというやり方でなくて、タグ別にイベントを判定するやり方を考えています。 <html xmlns="http://www.w3.org/1999/xhtml" > <head>   <title></title>   <script type="text/javascript">    window.onload = function ini(){     document.getElementsByTagName("img").onClick = alert("これは画像です");    }   </script> </head> <body>  <img src="..." />  <img src="..." />  <img src="..." />  <img src="..." /> </body> </html>

  • 複数タグ指定してHTMLを取得したい

    VBAでMSHTML.HTMLDocumentを使用してWEB上から指定したタグ内のテキストを取得しようとしているのですが、取得したいデータがタグが複数に分かれています。 divの特定クラス内だけなど取得したいのですが、データ1は<h1>データ2は<td>や<p>など、getElementsByTagName(tag)だと、一つしかタグを指定きず、個別に取得するとデータ1とデータ2の関連がバラバラになってしまう為、複数タグを指定して取得できる方法を探しています。 イメージとしてはgetElementsByTagName(tag).Lengthが10の時にh1のタグを発見してそこからh1のinnerTextとtdタグ2つ分のinnerText取得して、またh1タグを発見するまでループして取得するような形に出来ればと思っています。 自作する以外ないのでしょうか?

    • ベストアンサー
    • HTML
  • JavaScriptでタグを含む要素が返ってくる

    const base = document.getElementById('parent'); const children = base.children; console.log(children[0]); console.log(children[1]); console.log(children[2]); 下に記述したHTMLの<ul>の子要素を取得するために上記のように記述しました。この場合添付画像のようなタグを含めた要素が返ってきます。タグの中に書かれた内容を取得するにはtextContentを使えば良いようです。 初心者なもので、 <タグを含めた要素を取得してどんな使い道があるのでしょうか? 意味がよくわかりません。  使い慣れた方、これの使い道を教えてください。宜しくお願いいたします。 <ul id="parent"> <li id="first">1番目</li> <li id="second">2番目</li> <li id="third">3番目</li> </ul>

  • form要素について

    php初心者です。ログインページを勉強中なのですが、 form要素で受け取ったデータを別ページで取得したいんですがどうすればいいでしょうか? ★条件 1.最初の読み込み時は『ゲスト』と表示させたい 2.ログイン後は『名前』を表示させたい ●input.htmlファイル <form method="POST" action="output.php">  名前<input type="text" name="name"> </form> ●output.phpファイル <?php if($_REQUEST["name"] != null){  echo($_REQUEST["name"]); }else{  echo("ゲスト"); }?> アドバイスお願いします。

    • ベストアンサー
    • PHP
  • WEBページの表のデータを取得

    外部にあるWEBページにある表のデータを取得したいのですが、色々調べてみましたが見つからなくて、ご存じの方教えてください! あるWEBページに表がいくつかあります。 その中の一つの表のデータが全部欲しいです。 その表のTableタグにはIDがふってあります。 その表を囲んだDIVタグにもIDがふってあります。 URLは固定です。 TDタグの全てにはClassタグが入っています。 VB2005を使っています。 どのようにすればいいか見当がつかなくて、これ↓を使えばいいのかなあというくらいしかわかりませんでした。。(泣) Document.Body.GetElementsByTagName() どうぞよろしくお願いいたします。

専門家に質問してみよう