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.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というものをもう少し学んでからまた試してみたいと思います。
No.3
- 回答日時:
No.2です。
htmlのソース(タグなども含む)は全て変数の$dataなどに保存してある状態です。
=>でしたね、
$htmldata=file_get_contents("hoge.html");は不要です。
@$dom->loadHTML($data);
で、いいです。
※@を付けてるのは、HTMLの文法を守ってない可能性を無視したいためです。
※文字コードは適時、お使いの環境に合わせてください。
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については私の知識が足りずまだ理解できておりませんが提示していただいたマニュアルなどでいずれ理解したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- Perl PERL 1 2022/04/26 14:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLファイルの書き換え
-
メッセージボックスで1025文字...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
COBOLの改行
-
Excel関数「COUNTIF」で”文字”...
-
Excel VBAからBeckyを起動して...
-
半角記号、全角記号を含む正規...
-
C++で空Enterの入力を判...
-
エスケープ文字の復帰(¥r)と...
-
近似した文字列を置換するエク...
-
改行について
-
項目内改行があるCSVの書式設定...
-
キャリッジリターンとラインフ...
-
Replace関数は文字数の制限ある...
-
パソコンで全角、半角文字の切...
-
i-modeの絵文字をパソコンで再現
-
【VBA】エクセルで最後の不要な...
-
文の改行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
JSFタグのfタグとは
-
正規表現で複数行に渡る範囲を...
-
変数にHTMLを代入する場合
-
phpの正規表現でstyle="●●"を削...
-
Nvuで作成したhtmlをコピペして...
-
正規表現で指定範囲すべて除去...
-
正規表現でタグの置換をしたい...
-
Strutsでリンクを動的に生成したい
-
自分でタグ打ちして作ったペー...
-
php正規表現 相対パス→絶対パス
-
ASP.NET(C#)とhtmlの#include
-
PHPの正規表現でHTMLタグの内容...
-
csobjというタグについて
-
VBSでのhtmlタグ要素名の置換
-
htmlタグ間の特定文字置換
-
URLの連続アクセス
-
HTMLファイルの書き換え
-
htmlspecialchars関数を使いな...
-
javascriptの正規表現でhtmlか...
おすすめ情報