Calvin Salmon Calvin Salmon - 4 months ago 18
PHP Question

php: how to assign scraped html to array

I want to format what is output by the following php script:

<?php

$stop = $_POST["stop_number"]; // stop_number is an text input value provided by user
$depart_url = "http://64.28.34.43/hiwire?.a=iNextBusResults&StopId=" . $stop;
$html = file_get_contents($depart_url);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$my_xpath_query = "//td[@valign='top']";
$result = $xpath->query($my_xpath_query);

foreach($result as $result_object)
{
echo $result_object->childNodes->item(0)->nodeValue,'<br>';
}

?>


Here is the output (at least in one instance, as the data changes over time).

18 - GOLD
OUTBOUND
8:17p
8:16p
8 - GREEN
OUTBOUND
8:46p
8:46p
8 - GREEN
OUTBOUND
18 - GOLD
OUTBOUND
5 - PLUM
OUTBOUND


EDIT:

I want the output info above to go in a table such as the one below. However instead of the text between tags, it would be variables, or items from the php script output.

<!DOCTYPE html>
<html>
<title>Departure Table</title>

<body>
<h4>Next Departures for Stop Number: __ </h4>
<table border="1px solid black">
<tr>
<th>Route</th>
<th>Direction</th>
<th>Scheduled</th>
<th>Estimated</th>
</tr>
<tr>
<td>18 - Gold</td>
<td>Outbound</td>
<td>8:17p</td>
<td>8:16p</td>
</tr>
<tr>
<td>8 - Green</td>
<td>Outbound</td>
<td>8:46p</td>
<td>8:46p</td>
</tr>
</table>
</body>
</html>

Answer

Try appending a \n tag after your echo statement:

    echo $result_object->childNodes->item(0)->nodeValue."\n";

EDIT:

If you want to store your data in PHP variables, you could do something like this:

Store data in an array like variable (or any other data structure as per your needs) and iterate over the variable.

$store_data_in_array_variable = array();

foreach($result as $result_object)
{
    $store_data_in_array_variable[] = $result_object->childNodes->item(0)->nodeValue;

}

//iterate over all stored values

foreach ($store_data_in_array_variable as $key => $value) 
{
    echo $key;
    echo '<br>';
    echo $value;
}