Нужно изменить выход формата массива, сгенерированного SimpleHtmlDom. мой PHP-код. Результаты SimpleHtmlDom, что я использую это возвращение названия больницы в качестве ключа не значение ?:Формат массива с использованием SimpleHtmlDom
<?php
require('simple_html_dom.php');
$table = array();
$html = file_get_html('https://www.miemssalert.com/chats/Default.aspx?hdRegion=3');
foreach($html->find('table#tblHospitals tr td.Chats') as $e)
{
//echo $e->plaintext . $e->getAttribute('style') . '<hr>';
$nametime = $e->plaintext;
$color = $e->getAttribute('style');
$table[$nametime][$color] = true;
}
echo json_encode($table);
echo '<pre>';
var_dump($table);
echo '</pre>';
?>
текущих результатов массива:
array(37) {
["Anne Arundel Medical Center"]=>
array(1) {
[0]=>
bool(true)
}
[""]=>
array(1) {
[0]=>
bool(true)
}
["Baltimore Washington Medical Center"]=>
array(1) {
[0]=>
bool(true)
}
["04:31"]=>
array(1) {
["background-color:#ffff00;color:#000000;"]=>
bool(true)
}
["Bon Secours Hospital"]=>
array(1) {
[0]=>
bool(true)
}
...
Глядя на результаты, которые будет вложен массив по имени = > Время => Color
array(37) {
array(1) {["Name"]=>["Anne Arundel Medical Center"]=>
array(2) {
[time]=>[""],[color]=>[""]
}
}
array(1) {["Name"]=>["Baltimore Washington Medical Center"]=>
array(2) {
[time]=>["04:31"],[color]=>["background-color:#ffff00;color:#000000;"]
}
}
array(1) {["Name"]=>["Bon Secours Hospital"]=>
array(2) {
[time]=>[""],[color]=>[""]
}
}
...
Вы должны перекрыть элементы 'tr', а не' td.Chats'. Первым 'td' в' tr' становится имя. Затем зациклируйте оставшиеся элементы 'td' в строке, чтобы получить время и цвета. – Barmar
Почему у вас есть 'array (1)' для массивов, которые имеют два элемента: 'time' и' color'.? – Barmar
исправленный вопрос, результаты будут пустыми, если нет времени, см. Новое изменение - также см. Оригинальное сообщение на эту тему: http://stackoverflow.com/questions/39574672/screen-scraping-php-using-simplehtmldom – BarclayVision