У меня есть таблица базы данных, которая состоит из следующего формата данных в одном столбце.Анализ таблицы HTML в php
<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
. Чтобы отделить эти данные, мне нужно получить данные из старой базы данных и проанализировать их так.
$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 />';
}
}
Это выводит следующее:
Calories (kcal)Energy (kj)FatsCarbohydratesProtein
1787480 g9.6 g0.1 g
Я не могу отделить строки вывода, чтобы иметь правильные значения столбцов в новой базе данных.
Например, я хочу иметь значение 178
в Calories
колонке, 0 g
в Fats
колонке и т.д.
Что вы подразумеваете под «анализом данных на основе тега HTML» ?? – Preetam
Какой выход вы хотите? – Waygood
'nodeValue' удаляет все теги, вы хотите что-то вроде' innerHTML' Javascript. API DOMDocument этого не имеет, вам нужно написать его. В комментариях есть простая функция 'get_inner_html': http://php.net/manual/en/class.domelement.php – Barmar