Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_replace - słowa zmieniane na datę
slawekpiotr
post 15.06.2020, 06:33:01
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2020

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


Potrzebuję pomocy z patternem do preg_replace, chcę zamienić nazwy miesięcy i dni tygodnia pisane po polsku po hashu na ich odpowiedniki w najbliższej dacie np #dzisiaj żeby zmieniło na 2020-06-15, #środa żeby zmieniło na 2020-06-17, #luty żeby zmieniało na 2021-02-01, wrzesień na 2020-09-01 itd. Jak powinien wyglądać pattern do tego?
Go to the top of the page
+Quote Post
trueblue
post 15.06.2020, 08:32:39
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To jest hash w URL?

  1. $miesiace = ['styczen'=>'2020-01-01', ...];
  2.  
  3. $url = 'http://domena.pl/jakas_podstrona/#styczen';
  4. $miesiac = parse_url($url, PHP_URL_FRAGMENT);
  5. $url = str_replace($miesiac, $miesiace[$miesiac], $url);


--------------------
Go to the top of the page
+Quote Post
slawekpiotr
post 15.06.2020, 21:58:59
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2020

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


Nie, to będzie jakiś tekst i w miejscu gdzie pojawi się hash będzie koniec tekstu (system utnie), i ma z tego być tablica np. Ola kupiła sobie rower #dzisiaj, zwróci tablicę
  1. $tablica[] = 'Ola kupiła sobie rower';
  2. $tablica[] = 2020-06-15;

no tak, prosto byłoby zrobić styczeń => '2020-01-01' i tak wszystkie miesiące, tyle że styczeń już minął i potrzeba jest zamienić styczeń na 2021 rok, ale już lipiec na 2020 bo to data z przyszłości, system ma podawać datę najbliższą z przyszłości, i tu nie wiem jak rozwiązać..

Ten post edytował slawekpiotr 15.06.2020, 22:00:30
Go to the top of the page
+Quote Post
Lord
post 16.06.2020, 08:24:44
Post #4





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(slawekpiotr @ 15.06.2020, 22:58:59 ) *
no tak, prosto byłoby zrobić styczeń => '2020-01-01' i tak wszystkie miesiące, tyle że styczeń już minął i potrzeba jest zamienić styczeń na 2021 rok, ale już lipiec na 2020 bo to data z przyszłości, system ma podawać datę najbliższą z przyszłości, i tu nie wiem jak rozwiązać..


  1. $date = new DateTime('2000-12-31');
  2. $date->modify('+1 month')
  3.  
  4. // First day of a specific month
  5. $date = new DateTime('2010-01-19');
  6. $date->modify('first day of this month');
  7.  
  8.  
  9. $begin = new DateTime( '2012-08-01' );
  10. $end = new DateTime( '2012-08-31' );
  11. $end = $end->modify( '+1 day' );
  12.  
  13. $interval = new DateInterval('P1D');
  14. $daterange = new DatePeriod($begin, $interval ,$end);
  15.  
  16. foreach($daterange as $date){
  17. echo $date->format("Ymd") . "<br>";
  18. }


to powinno ci pomóc
Go to the top of the page
+Quote Post
trueblue
post 16.06.2020, 09:02:43
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Styczeń każdego roku zaczyna się 1-szego, podobnie jak luty i każdy inny miesiąc... Wystarczy podmienić rok.


--------------------
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: 19.04.2024 - 23:53