JuniorJack
16.06.2017, 11:48:10
Witam, Potrzebuje z następującego kodu html
<img src="logo.gif"><br><code>Data: 08.06.2017, Godzina: 14:20:34<br><b></b>Stan licznika:<br>- aktualna godzina: <b>0</b>
<br>- od początku dnia: <b>18</b><br><br>W rozbiciu na godziny:
<br> 0:00 - 1:00: <b> 0</b>
<br> 1:00 - 2:00: <b> 0</b>
<br> 2:00 - 3:00: <b> 0</b>
<br> 3:00 - 4:00: <b> 0</b>
<br> 4:00 - 5:00: <b> 0</b>
<br> 5:00 - 6:00: <b> 0</b>
<br> 6:00 - 7:00: <b> 0</b>
<br> 7:00 - 8:00: <b> 0</b>
<br> 8:00 - 9:00: <b> 0</b>
<br> 9:00 - 10:00: <b> 1</b>
<br>10:00 - 11:00: <b> 0</b>
<br>11:00 - 12:00: <b> 4</b>
<br>12:00 - 13:00: <b> 12</b>
<br>13:00 - 14:00: <b> 1</b>
<br>14:00 - 15:00: <b> 0</b>
<br>15:00 - 16:00: <b> 0</b>
<br>16:00 - 17:00: <b> 0</b>
<br>17:00 - 18:00: <b> 0</b>
<br>18:00 - 19:00: <b> 0</b>
<br>19:00 - 20:00: <b> 0</b>
<br>20:00 - 21:00: <b> 0</b>
<br>21:00 - 22:00: <b> 0</b>
<br>22:00 - 23:00: <b> 0</b>
<br>23:00 - 24:00: <b> 0</b>
<br><br>Status: 100000<br>Diagnostyka: 00
<br>s#: 02782, v1.13f(000001)<br>
Stos: 74<br><a href="./mem.cgi?I=1">dane archiwalne</a><br>
<a href="./email.cgi">wyślij raport e-mail</a><br><a href="./config.cgi">aktualna konfiguracja</a></code>
wyciągnąć dane i zapisać je w tablicy najlepiej w formacie
0:00 - 1:00 =>0
1:00 - 2:00 =>0
itd.
Próbuje to zrobić przy pomocy preg_match:
$tab = preg_match('@([0-9]+:[0-9]+)- ([0-9]+:[0-9]+)@', $page);
ale nie znajduje mi żadnych wyrażeń.
Ktoś ma jakiś pomysł?
Pyton_000
16.06.2017, 11:51:59
JuniorJack
16.06.2017, 12:20:48
Dzięki Pyton prawie działa ale tablica zwaraca 4 następujące pozyjcę:
0:00 - 1:00: 0
0:00
1:00
0
KOD:
$tab = preg_match('@(\d{1,2}:\d{2}) - (?: )?(\d{1,2}:\d{2}).*?(\d+)@m', $page, $matches);
$nTab = count($matches);
for ($i=0;$i<$nTab; $i++)
echo $matches[$i].'<br />';
Pyton_000
16.06.2017, 12:29:40
I jaki masz w tym problem? W 1-szym element zawsze zawiera pełne dopasowanie.
JuniorJack
16.06.2017, 12:47:49
bo chodzi o to żeby wyciągnąć wszystkie zakresy godzin + liczba wejść a wyciąga tylko pierwszy
0:00 - 1:00: 0
1:00 - 2:00: 0
2:00 - 3:00: 0
3:00 - 4:00: 0
4:00 - 5:00: 0
5:00 - 6:00: 0
6:00 - 7:00: 0
7:00 - 8:00: 0
8:00 - 9:00:1
9:00 - 10:00: 0
10:00 - 11:00: 4
11:00 - 12:00: 12
12:00 - 13:00: 1
13:00 - 14:00: 0
14:00 - 15:00: 0
15:00 - 16:00: 0
16:00 - 17:00: 0
17:00 - 18:00: 0
18:00 - 19:00: 0
19:00 - 20:00: 0
20:00 - 21:00: 0
21:00 - 22:00: 0
22:00 - 23:00: 0
23:00 - 24:00: 0
Pyton_000
16.06.2017, 13:05:08
Puszy
16.06.2017, 13:09:18
preg_match_all()
Gwoli ścisłości:
<?php
$tab = preg_match_all('@(\d{1,2}:\d{2}) - (?: )?(\d{1,2}:\d{2}).*?(\d+)@m', $page, $matches);
foreach ($matches[0] as $match){
}
JuniorJack
16.06.2017, 14:06:26
Niestety:
Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\liczniki\import.php on line 9
podpowiedzcie mi proszę czy w ogóle dobrze kombinuje próbując zapisać to w tablicy.
Potrzebuje te dane zapisać do bazy danych. Skrypt ma się wykonać raz dziennie i zapisać dane z każdego dnia z wejściami o poszczególnych godzinach?
Pyton_000
16.06.2017, 14:09:56
nie wstawiłeś ;
JuniorJack
16.06.2017, 14:14:38
preg_match_all('@(\d{1,2}:\d{2}) - (?: )?(\d{1,2}:\d{2}).*?(\d+)@', $page, $matches);
foreach ($matches[0] as $match)
{
echo $match.'<br />';
}
moim zdaniem jest wszędzie gdzie powinien być
Pyton_000
16.06.2017, 14:16:49
To może pokaż 15 linijek od początku...
JuniorJack
16.06.2017, 14:23:21
$page = file_get_contents("tomaszow.html");
preg_match_all('@(\d{1,2}:\d{2}) - (?: )?(\d{1,2}:\d{2}).*?(\d+)@', $page, $matches);
foreach ($matches[0] as $match)
{
echo $match.'<br />';
}
to jest cały kod
foreach ($matches[0] as $match)
a to jest 9 linia
Pyton_000
16.06.2017, 14:26:18
skoro tak twierdzisz to ten kod działa
JuniorJack
16.06.2017, 14:30:04
no niestety nie ;(
Puszy
16.06.2017, 14:35:51
Nie ma prawa nie działać, masz najzwyklejszy błąd składni, do tego konkretnie opisany co jest nie halo.
Pyton_000
16.06.2017, 15:38:35
Idę o zakład że brakuje `;` przed foreach i że nie pokazałeś całego kodu.
JuniorJack
16.06.2017, 18:33:36
<?php
$page = file_get_contents("tomaszow.html");
preg_match_all('@(\d{1,2}:\d{2}) - (?: )?(\d{1,2}:\d{2}).*?(\d+)@', $page, $matches);
foreach ($matches[0] as $match)
{
echo $match.'<br />';
}
?>
to jest cały kod, który zwraca błąd
Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\liczniki\import.php on line 9
Miałbym pisać nieprawdziwy kod i oczekiwać pomocy...
Pyton_000
16.06.2017, 18:43:59
Jaka wersja PHP?
viking
16.06.2017, 18:44:57
To w takim razie w kodzie jest jakiś znak który wyświetla się jako biały a rzeczywiście nim nie jest.
JuniorJack
16.06.2017, 18:50:38
viking jesteś mistrz. wykasowałem puste linijki przed foreach i poszło. Dzięki wszystkim za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.