다음 열의 데이터 형식으로 구성된 데이터베이스 테이블이 있습니다.PHP에서 HTML 테이블 구문 분석
<table cellspacing="1" cellpadding="0" border="0" width="395">
<tbody>
<tr>
<td valign="top" width="135">
<p>Calories (kcal)<br>Energy (kj)<br>Fats<br>Carbohydrates<br>Protein<br></p>
</td>
<td valign="top">
<p>178<br>748<br>0 g<br>9.6 g<br>0.1 g<br></p>
</td>
<td valign="top" width="135">
<p>Fiber<br>Sugars<br>Cholesterol<br>Sodium<br>Alcohol<br></p>
</td>
<td valign="top">
<p>0 g<br>-<br>0 mg<br>-<br>26.2 g<br></p>
</td>
</tr>
</tbody>
</table>
나는 Calories
, Fats
, Carbohydrates
및 Protein
에 대해 별도의 열이 다른 데이터베이스를 만들고 싶어. 이 데이터를 분리하려면 이전 데이터베이스에서 데이터를 가져 와서 이렇게 구문 분석해야합니다.
Calories (kcal)Energy (kj)FatsCarbohydratesProtein
1787480 g9.6 g0.1 g
내가 새 데이터베이스에 올바른 열 값을 가지고 출력 문자열을 분리 할 수없는입니다 :
$qry = "SELECT * FROM table";
$res = $mysqli->query($qry);
// new dom object
$dom = new DOMDocument();
while ($row = $res->fetch_assoc()) {
$html = @$dom->loadHTML($row['columndata']);
//the table by its tag name
$tables = $dom->getElementsByTagName('table');
$rows = $tables->item(0)->getElementsByTagName('tr');
foreach ($rows as $row)
{
$cols = $row->getElementsByTagName('td');
echo $cols->item(0)->nodeValue.'<br />';
echo $cols->item(1)->nodeValue.'<br />';
}
}
이
다음과 같은 출력합니다.예를 들어, 당신이 당신의 TD 요소의 innerHTML을을 얻고 싶은 경우에, 당신은 건설 다음 사용할 수는 Calories
열에서 Fats
열에서 0 g
등
'HTML 태그를 기반으로 데이터 분석'이란 무엇을 의미합니까 ?? – Preetam
어떤 출력을 원하십니까? – Waygood
'nodeValue'는 모든 태그를 제거합니다. Javascript의 'innerHTML'과 같은 것이 필요합니다. DOMDocument API에는이 기능이 없으므로 작성해야합니다. http://php.net/manual/en/class.domelement.php에있는 간단한 'get_inner_html' 함수가 있습니다. – Barmar