Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czas "xx temu" -> timestamp
Forum PHP.pl > Forum > PHP
Mustava
Mam dane dotyczące daty/czsu w formacie "xx temu"np
Kod
3 Dni, 22 Godzin, 39 Minut temu
1 Godzina(y), 20 Minut temu
xx Minut(a)/(Sekund(a)) temu
1 godzina(y) temu


Jak toto zamienić na timestamp?
Rozumiem, że muszę przeliczyć wszystkie "kawałki" na sekundy, zsumować i odjąć od "teraz".
Ale jak to sprytnie zrobić? - preg_replace?
Przyklad?
thek
Przeparsuj do angielskiego i użyj jako parametr dla strtotime.
Pilsener
Cytat
Jak toto zamienić na timestamp?
:
http://pl.php.net/manual/pl/function.strtotime.php
Cytat
Mam dane dotyczące daty/czsu w formacie "xx temu"np
- preg_match. A jeśli dane te mają stały format (czyli zawsze jest np. dni, godzin, minut) to preg_splitem można to podzielić i pierwsza liczba to będą dni, druga godziny itd. A jeśli nie, to po wyrażeniach regularnych, [liczba][spacja]God* to godzina, [liczba][spacja]Min* minuty itd.
wookieb
A po co Ci coś takiego? i tak będzie to bardzo niedokładne.
Mustava
Nie tak zaś bardzo, nie chodzi mi o kilka sek. ew. minut.
Muszę pobrać dane z innej strony (forum, galeria, komentarze itp)

Mam następny problem - nie wiem dlaczego strtotime nie zamienia podstawionej zmiennej


  1. $blok="sdfasdfasd <span>2 day, 3 hour, 44 min, 25 sec ago</span>rtert <br>sdrgregewrgwer";
  2.  
  3. $regex = '/<span>([\d\D]*?) ([ago]{3})+<\/span>/';
  4. preg_match_all($regex,$blok,$matches);
  5.  
  6. print_r($matches);
  7.  
  8. echo"<br>";
  9. $temu=$matches[0][0];
  10. // $temu="2 day, 3 hour, 44 min, 25 sec ago";
  11. $time_stmp=strtotime($temu);
  12.  
  13. echo "<br>**$temu**<br>";
  14. echo "<br>**$time_stmp**<br>";


jeżeli podstawię "na żywca" tekst jest ok (to wyremowane)

questionmark.gif

Nikt nie może pomóc?
thek
Bo
$regex = '/<span>([\d\D]*?) ([ago]{3})+<\/span>/';
jest nieprawidłowym wyrażeniem regularnym. Zainteresuj się edytorami do wyrażeń regularnych i przetestuj je najpierw a sam zobaczysz, że zwraca Ci głupoty.
phpion
Cytat(thek @ 20.07.2010, 21:19:34 ) *
Zainteresuj się edytorami do wyrażeń regularnych

Polecam Regex Coach.
Mustava
Cytat(thek @ 20.07.2010, 21:19:34 ) *
Bo
$regex = '/<span>([\d\D]*?) ([ago]{3})+<\/span>/';
jest nieprawidłowym wyrażeniem regularnym. Zainteresuj się edytorami do wyrażeń regularnych i przetestuj je najpierw a sam zobaczysz, że zwraca Ci głupoty.


Sorry, ale jakoś nie mogę doszukać się błędu

Wywołanie sktyptu w przeglądarce daje wynik:
Kod
Array ( [0] => Array ( [0] => 2 day, 3 hour, 44 min, 25 sec ago  ) [1] => Array ( [0] => 2 day, 3 hour, 44 min, 25 sec ) [2] => Array ( [0] => ago ) )

**2 day, 3 hour, 44 min, 25 sec ago**

****

a więc to o co mi chodzi ="2 day, 3 hour, 44 min, 25 sec ago"

Natomiast użycie (być może błędne) wspomnianego Regex Coach.






Testowałem także na http://maciek.lasyk.info/index.php?action=regexp_checker

Możecie mnie oświecić - dopiero zaczynam zabawę m.in z php więc....


Może dalej błędnie, ale "zaskoczyło" w takiej kombinacji
  1. $temu=$matches[1][0]." ".$matches[2][0];


====================================
Teraz następny problem:

Cytat(thek @ 15.07.2010, 08:40:16 ) *
Przeparsuj do angielskiego i użyj jako parametr dla strtotime.


No właśnie próbowałem:

  1. $blok="sdfasdfasd <span>2 day, 3 hour, 44 min, 25 sec ago</span>rtert <br>sdrgregewrgwer";
  2.  
  3. $patterns = '/<span>([\d\D]*?) ([ago]{3})+<\/span>/';
  4. $x=preg_replace($patterns, strtotime('$1 $2') , $blok);
  5. echo "<br>=$x=<br>";

Nie za bardzo to działa (a raczej nie działa) - mały help?

Rozwiązanie problemu (m.in. dla ew. potomnych):

  1.  
  2. $blok="sdfasdfasd <span>2 day, 3 hour, 44 min, 25 sec ago</span>rtert <br>sdrgregewrgwer";
  3.  
  4. function czastime ($matches) { return date('Y-m-d H:i:s',strtotime($matches[1].$matches[2]));}
  5.  
  6. $x = preg_replace_callback($patterns, "czastime", $blok);
  7. echo "$x";
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.