Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne
JuniorJack
post 16.06.2017, 11:48:10
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


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>&nbsp;0:00 - &nbsp;1:00:&nbsp;<b> 0</b>
<br>&nbsp;1:00 - &nbsp;2:00:&nbsp;<b> 0</b>
<br>&nbsp;2:00 - &nbsp;3:00:&nbsp;<b> 0</b>
<br>&nbsp;3:00 - &nbsp;4:00:&nbsp;<b> 0</b>
<br>&nbsp;4:00 - &nbsp;5:00:&nbsp;<b> 0</b>
<br>&nbsp;5:00 - &nbsp;6:00:&nbsp;<b> 0</b>
<br>&nbsp;6:00 - &nbsp;7:00:&nbsp;<b> 0</b>
<br>&nbsp;7:00 - &nbsp;8:00:&nbsp;<b> 0</b>
<br>&nbsp;8:00 - &nbsp;9:00:&nbsp;<b> 0</b>
<br>&nbsp;9:00 - 10:00:&nbsp;<b> 1</b>
<br>10:00 - 11:00:&nbsp;<b> 0</b>
<br>11:00 - 12:00:&nbsp;<b> 4</b>
<br>12:00 - 13:00:&nbsp;<b> 12</b>
<br>13:00 - 14:00:&nbsp;<b> 1</b>
<br>14:00 - 15:00:&nbsp;<b> 0</b>
<br>15:00 - 16:00:&nbsp;<b> 0</b>
<br>16:00 - 17:00:&nbsp;<b> 0</b>
<br>17:00 - 18:00:&nbsp;<b> 0</b>
<br>18:00 - 19:00:&nbsp;<b> 0</b>
<br>19:00 - 20:00:&nbsp;<b> 0</b>
<br>20:00 - 21:00:&nbsp;<b> 0</b>
<br>21:00 - 22:00:&nbsp;<b> 0</b>
<br>22:00 - 23:00:&nbsp;<b> 0</b>
<br>23:00 - 24:00:&nbsp;<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]+)-&nbsp;([0-9]+:[0-9]+)@', $page);
ale nie znajduje mi żadnych wyrażeń.

Ktoś ma jakiś pomysł?
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 11:51:59
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


https://regex101.com/r/hAzOrG/1
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 12:20:48
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


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}) - (?:&nbsp;)?(\d{1,2}:\d{2}).*?(\d+)@m', $page, $matches);


$nTab = count($matches);

for ($i=0;$i<$nTab; $i++)
echo $matches[$i].'<br />';





Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 12:29:40
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


I jaki masz w tym problem? W 1-szym element zawsze zawiera pełne dopasowanie.
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 12:47:49
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


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


Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 13:05:08
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


sciana.gif facepalmxd.gif
Go to the top of the page
+Quote Post
Puszy
post 16.06.2017, 13:09:18
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


preg_match_all()

Gwoli ścisłości:

  1. <?php
  2.  
  3. $tab = preg_match_all('@(\d{1,2}:\d{2}) - (?:&nbsp;)?(\d{1,2}:\d{2}).*?(\d+)@m', $page, $matches);
  4.  
  5.  
  6. foreach ($matches[0] as $match){
  7. echo $match.'<br />';
  8. }


Ten post edytował Puszy 16.06.2017, 13:13:56
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 14:06:26
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 14:09:56
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


nie wstawiłeś ;
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 14:14:38
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


preg_match_all('@(\d{1,2}:\d{2}) - (?:&nbsp;)?(\d{1,2}:\d{2}).*?(\d+)@', $page, $matches);
  
foreach ($matches[0] as $match)
{
echo $match.'<br />';
}


moim zdaniem jest wszędzie gdzie powinien być
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 14:16:49
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To może pokaż 15 linijek od początku...
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 14:23:21
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


$page = file_get_contents("tomaszow.html");

preg_match_all('@(\d{1,2}:\d{2}) - (?:&nbsp;)?(\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
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 14:26:18
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


skoro tak twierdzisz to ten kod działa
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 14:30:04
Post #14





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


no niestety nie ;(
Go to the top of the page
+Quote Post
Puszy
post 16.06.2017, 14:35:51
Post #15





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


Nie ma prawa nie działać, masz najzwyklejszy błąd składni, do tego konkretnie opisany co jest nie halo.

Ten post edytował Puszy 16.06.2017, 14:36:01
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 15:38:35
Post #16





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Idę o zakład że brakuje `;` przed foreach i że nie pokazałeś całego kodu.
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 18:33:36
Post #17





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


<?php



$page = file_get_contents("tomaszow.html");

preg_match_all('@(\d{1,2}:\d{2}) - (?:&nbsp;)?(\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...
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2017, 18:43:59
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jaka wersja PHP?
Go to the top of the page
+Quote Post
viking
post 16.06.2017, 18:44:57
Post #19





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


To w takim razie w kodzie jest jakiś znak który wyświetla się jako biały a rzeczywiście nim nie jest.


--------------------
Go to the top of the page
+Quote Post
JuniorJack
post 16.06.2017, 18:50:38
Post #20





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.07.2015

Ostrzeżenie: (0%)
-----


viking jesteś mistrz. wykasowałem puste linijki przed foreach i poszło. Dzięki wszystkim za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 21:31