Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zamiana daty w aktywny link
mb83
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


Witam,
Mam przykładowy tekst:
"Dzisiaj jest {2015-01-01} i nie pada śnieg"
i chcę napisać funkcję, która zamieni {2015-01-01} na <a href=/data/2015-01-01'>1 stycznia 2014 (czwartek)</a>.

czyli efekt będzie:
  1. Dzisiaj jest <a href=/data/2015-01-01'>1 stycznia 2014 (czwartek)</a> i nie pada śnieg


tylko nie wiem jak poprawnie skonstruować tą funkcję, która będzie wyszukiwać string, konwertować do formatu (1 stycznia ...) i zamieniać w link.

mam coś takiego tylko to jest dopiero początek i nie wiem co dalej:
  1. $pattern = '{2014-05-25}';
  2. $replacement = '<a href=\'2014-05-25\'>2014-05-25</a>';
  3. $subject = 'dzisiaj jest 2014-05-25';
  4. echo preg_replace($pattern, $replacement, $subject, -1 );


Można prosić o jakiś przykład? Będę wdzięczny za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mb83
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


podobnie jak trueblue wykombinowałem - pozbyłem się klamr ({}) i formatuję datę za pomocą dateV, dzięki trueblue za pomoc!
  1. $string = "dzisiaj jest 2015-01-01 a jutro będzie 2015-01-02.";
  2. echo preg_replace_callback('([0-9]{4}-[0-9]{2}-[0-9]{2})', function($match){
  3. $data_tekstowa=dateV('j F Y', strtotime($match[0]));
  4. $dzien_tekstowy=dateV('l', strtotime($match[0]));
  5. return "<a href=\"/data/".$match[0]."\">".$data_tekstowa." (".$dzien_tekstowy.")</a>";
  6. },$string);


jeszcze jedno: a da się to ulepszyć tak aby linkował tylko datę z przyszłości a datę z przeszłości wyświetlał jako tekst bez linku?

mam na myśli coś takiego:
  1. $dat = date("Y-m-d");
  2. $skrot = preg_replace_callback('([0-9]{4}-[0-9]{2}-[0-9]{2})', function($match){
  3. $data_tekstowa=dateV('j f Y', strtotime($match[0]));
  4. $dzien_tekstowy=dateV('l', strtotime($match[0]));
  5. $mat=date('Y-m-d', strtotime($match[0]));
  6. if(($dat)<($mat)) return "<a href=\"/data/".$match[0]."\" title=\"".$data_tekstowa." (".$dzien_tekstowy.")\">".$data_tekstowa." (".$dzien_tekstowy.") -- ".$mat."</a>";
  7. if(($dat)>($mat)) return "".$data_tekstowa." (".$dzien_tekstowy.") -- ".$mat."";
  8. },$skrot);


ale to nie za bardzo działa bo linkuje wszystkie daty, gdzie jest błąd?
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: 7.10.2025 - 21:09