
htmlのソースからテーブルの値を抜き出して配列に保存したいと思っています。
htmlのソース(タグなども含む)は全て変数の$dataなどに保存してある状態です。
例えば
<html>
<head>
....
<div>
<table id="sample-table">
<tr>
<td> a </td>
<td> b </td>
<td> c </td>
</tr>
<tr>
<td> d </td>
<td> e </td>
<td> f </td>
</tr>
....
<tr>
<td> x </td>
<td> y </td>
<td> z </td>
</tr>
</table>
</div>
....
</head>
</html>
の部分のa,b,c,....x,y,zの部分を順に配列に格納したいと思っています。
ご存じの方がおられましたらよろしくお願いします。
No.1ベストアンサー
- 回答日時:
単純にtdタグに挟まれたデータを抜き出すだけならこんな感じで?
<?
$str=<<<eof
<html>
<head>
<div>
<table id="sample-table">
<tr>
<td> a </td>
<td> b </td>
<td> c </td>
</tr>
<tr>
<td> d </td>
<td> e </td>
<td> f </td>
</tr>
<tr>
<td> x </td>
<td> y </td>
<td> z </td>
</tr>
</table>
</div>
</head>
</html>
eof;
$pattern="/(?<=<td>).*?(?=<\/td>)/";
preg_match_all($pattern,$str,$matches);
print_r($matches);
?>
No.4
- 回答日時:
http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html
http://www.w3.org/TR/DOM-Level-3-Core/core.html
使うんならマニュアル読んでね。
使いこなせないなら、正規表現なり simple_xml なりでいんじゃない。
返事が遅くなってしまい申し訳ありません。
今回はyambejpさんの提示していただいた正規表現で実現できました。
DOMDocumentについては私の知識が足りずまだ理解できておりませんが提示していただいたマニュアルなどでいずれ理解したいと思います。
No.3
- 回答日時:
No.2です。
htmlのソース(タグなども含む)は全て変数の$dataなどに保存してある状態です。
=>でしたね、
$htmldata=file_get_contents("hoge.html");は不要です。
@$dom->loadHTML($data);
で、いいです。
※@を付けてるのは、HTMLの文法を守ってない可能性を無視したいためです。
※文字コードは適時、お使いの環境に合わせてください。
No.2
- 回答日時:
DOMオブジェクトに流し込んで、
DOM APIやXpathで取り出せばどうでしょう。
<?php
mb_internal_encoding("UTF-8");
$htmldata=file_get_contents("hoge.html");
$arry = array();
$dom = new DOMDocument();
@$dom->loadHTML($htmldata);
$dom->normalizeDocument();
$xpath = new DOMXPath($dom);
$query = "/descendant::tr";
$entries = $xpath->query($query);
foreach($entries as $entry){
$tds=$entry->getElementsByTagName("td");
for ($i = 0; $i < $tds->length-1; $i++) {
array_push($arry,mb_convert_encoding($tds->item($i)->textContent), "ISO-8859-1","UTF-8"));
}
}
?>
返事が遅くなってしまい申し訳ありません。
提示していただいた方法では私の知識が足りずうまく動作させることができませんでした。
DOMというものをもう少し学んでからまた試してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現で複数行に渡る範囲を...
-
アフィリエイトタグについて質...
-
PHPの正規表現でHTMLタグの内容...
-
phpの正規表現でstyle="●●"を削...
-
タグにはさまれている文字以外...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
エクセルのCOUNTIFが正しくカウ...
-
メッセージボックスで1025文字...
-
COBOLの改行
-
ソースコードの1行が長いとき...
-
C# DataGridViewのセルを改行禁...
-
ファイルから読み取った改行文...
-
VBAでCSVをExcelに取り込む時に...
-
、"(ダブルクォーテーション)...
-
テキストボックスに改行を含む...
-
ラベル(スタティックテキスト)...
-
Excel関数「COUNTIF」で”文字”...
-
最終行の改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現の否定先読みについて
-
PHP テキストファイルの一部分...
-
実行結果で画像が出力されない...
-
【PHP】正規表現でHTMLを置換し...
-
とても初歩的な質問で申し訳な...
-
htmlソースの中を検索して、
-
携帯用HPの作成で
-
firefoxで、特定の文字列を含む...
-
eclipseより、タスク・タグの使...
-
ASP.NET(C#)とhtmlの#include
-
PHP4→5にアップグレードしたら...
-
PHP Webページのタイトルを取得...
-
CGIファイルの書き換えについて...
-
htmlタグ間の特定文字置換
-
echoで画像を呼び出すことがで...
-
自動置き換えタグをHTML形式にする
-
ヒアドキュメント
-
URLの連続アクセス
-
phpの正規表現でstyle="●●"を削...
-
php正規表現 相対パス→絶対パス
おすすめ情報