Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czas "xx temu" -> timestamp
Mustava
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 2.03.2009

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


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?

Ten post edytował Mustava 14.07.2010, 22:50:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mustava
post
Post #2





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 2.03.2009

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


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.

(IMG:http://img806.imageshack.us/img806/620/regexcoach.th.jpg)




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";


Ten post edytował Mustava 22.07.2010, 22:24:57
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 03:38