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で質問しましょう!
似たような質問が見つかりました
- 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ランキング
-
YouTubeの動画をphpmyadminにin...
-
掲示板を作成しておりアップロ...
-
ファイルアップロードに関して...
-
フォームで戻った際に入力済み...
-
プログラムコードを入力する場...
-
PHP8を使うと、大量のWarningが...
-
PHPのセッション有効期限について
-
PHPSpreadsheetを使って関数を...
-
csvファイルについて教えて下さ...
-
画像ファイルの名前をそのままU...
-
php my adminより取り出したデ...
-
PHPでユーザー情報を入力して簡...
-
PHPSpreadsheetによる書き出し...
-
PHPのエラーの解消法について教...
-
php テーブルが作成できない
-
phpでcookieがうまく保存されない
-
Postgresの特定のカラムからス...
-
PHPの構文で間違えが分からない
-
書籍とその書籍が提供している...
-
ワードプレスサイト PHP8.0.25...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
変数にHTMLを代入する場合
-
Nvuで作成したhtmlをコピペして...
-
srcに「banner.」で始まるファ...
-
PHPの正規表現でHTMLタグの内容...
-
csobjというタグについて
-
htmlでflashを開く、画面サイズ...
-
[php][正規表現]タグ以外を削除...
-
HTMLファイルの書き換え
-
正規表現でHTMLタグの属性まで...
-
★PHP★フォーム登録時にタグを読...
-
正規表現でタグの置換をしたい...
-
PHP4→5にアップグレードしたら...
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
PHP Webページのタイトルを取得...
-
リッチテキストエディターでの...
-
MP3のコメントタグやSYLTの詳細
-
オリジナルタグをHTMLタグに置...
-
print "<img src=\\"0.jpg\\/>\...
おすすめ情報