質問編集履歴

2 html構造を載せました。

agep31

agep31 score 21

2018/06/26 17:20  投稿

DOMxpathを用い特定タグの要素を配列に格納したい
### 前提・実現したいこと
phpを使って指定したurlから特定のタグの抽出を行っています。
DOMxpathを用いて指定のURLから<h5>タグの要素をそれぞれ配列に格納したいのですが、方法がわかりません。現時点では、<h5>タグの抽出は以下の出力結果の通りになっています。
<html>  
```ここに言語を入力  
<!DOCTYPE html>  
<html>  
<head>  
<title>研究</title>  
</head>  
<body>  
<h5>ABCDE</h5>  
<h5>12345</h5>  
</body>  
</html>>  
```  
 
このようなhtml構造の中で<h5>タグから抽出したABCDEと12345を  
 
array(0) = ABCDE  
array(1) = 12345  
 
のように配列で格納したいです。DOMxpathを使って要素を抽出した後の処理がわかりません。  
<出力結果>
/*------------<h5>----------------*/
string(30) "旅行代金(お一人様)" string(30) "追加料金(お一人様)"
この2つある要素を1つの配列に格納したいです。
### 該当のソースコード
```ここに言語名を入力
<!DOCTYPE html>
<html>
<head>
<title>研究</title>
</head>
<body>
<?php
//対象URL
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0rn"));
$context = stream_context_create($opts);
$url = "https://search.mwt.co.jp/mintl/detail/CFMZ67VADC12.html?mediacd=ZTP";
$html = file_get_contents($url,false,$context);
$dom = new DOMDocument;
@$dom->loadHTML(
   mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII,JIS,UTF-8,eucJP-win,SJIS-win'),
   LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD
   );
$xpath = new DOMXPath($dom);
echo "/*------------<h5>----------------*/<br>";
$h5 = $xpath->query('//h5');
foreach ($h5 as $h5_result){
   if(empty($h5_result->nodeValue)){
       echo "該当なし";
   }
   var_dump($h5_result->nodeValue);
}
?>
```
### 補足情報(FW/ツールのバージョンなど)
php5.6.37 eclipseOxygen
  • PHP

    24014 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Eclipse

    1921 questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • XPath(XML Path)

    91 questions

    XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

1 タイトルを変更しました。

agep31

agep31 score 21

2018/06/26 16:35  投稿

### 前提・実現したいこと
phpを使って指定したurlから特定のタグの抽出を行っています。
DOMxpathを用いて指定のURLから<h5>タグの要素をそれぞれ配列に格納したいのですが、方法がわかりません。現時点では、<h5>タグの抽出は以下の出力結果の通りになっています。
<出力結果>
/*------------<h5>----------------*/
string(30) "旅行代金(お一人様)" string(30) "追加料金(お一人様)"
この2つある要素を1つの配列に格納したいです。
### 該当のソースコード
```ここに言語名を入力
<!DOCTYPE html>
<html>
<head>
<title>研究</title>
</head>
<body>
<?php
//対象URL
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0rn"));
$context = stream_context_create($opts);
$url = "https://search.mwt.co.jp/mintl/detail/CFMZ67VADC12.html?mediacd=ZTP";
$html = file_get_contents($url,false,$context);
$dom = new DOMDocument;
@$dom->loadHTML(
mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII,JIS,UTF-8,eucJP-win,SJIS-win'),
LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD
);
$xpath = new DOMXPath($dom);
echo "/*------------<h5>----------------*/<br>";
$h5 = $xpath->query('//h5');
foreach ($h5 as $h5_result){
if(empty($h5_result->nodeValue)){
echo "該当なし";
}
var_dump($h5_result->nodeValue);
}
?>
```
### 補足情報(FW/ツールのバージョンなど)
php5.6.37 eclipseOxygen
  • PHP

    24014 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Eclipse

    1921 questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • XPath(XML Path)

    91 questions

    XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る