Autor | Zpráva | ||
---|---|---|---|
Daniel47 Profil |
Ahojte, nevíte jak v php nahradit tohle:
<pubDate>Thu, 22 Oct 2020 11:47:00 GMT</pubDate>
Za kód: <b>22.11.2020 - 11:47:00</b>
??? Vím, že by to šlo udělat funkcí: preg_replace(); Budu rád za rady! |
||
anonym_ Profil * |
#2 · Zasláno: 22. 10. 2020, 15:47:23
Daniel47:
date() |
||
Daniel47 Profil |
anonym:
Jak to mám dát do kódu? Chci to dát do tohohle: $vystup = preg_replace("~\<(pubDate)\>(.+?)\</\\1\>~ui", "<b>"\\2"</b>", $vstup); |
||
Serg Profil |
Daniel47:
Nejdřív je potřeba se zbavit té html značky, buď tím preg_replace, nebo preg_match() . Potom je potřeba z toho datumu dostat jeho timestamp, na to lze použít buď DateTime objekt, nebo funkci strtotime() . A nakonec z toho timestampu vytvořit naformátovaný datum pomocí funkce date() (nebo metody $dt->format() kdyby se pracovalo s DateTime objektem).
$str = "<pubDate>Thu, 22 Oct 2020 11:47:00 GMT</pubDate>"; $found = preg_match("~<pubDate>(.*?)</pubDate>~", $str, $matches); if ($found) { $dateStr = $matches[1]; // v [0] bude i s tou html znackou, coz nechceme $timestamp = strtotime($dateStr); $date = date("d.m.Y - H:i:s", $timestamp); echo "<b>$date</b>"; } else echo "Datum neni k dispozici"; |
||
Daniel47 Profil |
Serg:
Díky za odpověď, ale já zpracovávám XML(RSS) soubor a tech <pubDate> značek je tam mnoho a tenhle skript by mi to asi nezpracoval, že? |
||
anonym_ Profil * |
#6 · Zasláno: 22. 10. 2020, 20:10:39
Daniel47:
Pokud zpracovávas xml, existují funkce parsujici xml. Pak nebudeš muset řešit náhradu tagu za tag, bude pracovat jen s hodnotou tagu. Hodnotu zpracujes funkci date, o parkování xml si něco nacti (víš, co mas hledat). |
||
Daniel47 Profil |
A ještě jedna otázka nešlo by místo
<pubDate>Thu, 22 Oct 2020 11:47:00 GMT</pubDate> <pubDate>22.11.2020 - 11:47:00</pubDate> Upozorňují je to XML(RSS). |
||
anonym_ Profil * |
#8 · Zasláno: 22. 10. 2020, 20:15:32
Daniel47:
Ano, šlo (ptal jsi se, jestli by šlo, proto taková odpověď). Všechny funkce i termíny k hledání zde již padly, pracuj s nimi (včetně toho, ze si je nastudujes). |
||
Daniel47 Profil |
#9 · Zasláno: 22. 10. 2020, 20:16:28
anonym:
Ok, díky... |
||
Keeehi Profil |
#10 · Zasláno: 22. 10. 2020, 20:23:53
Jedna možnost jak psal Daniel47 je to XML načíst a pak v tom stomu traverzovat. Což se bude hodit, pokud těch úprav v xml děláš více, sestavuješ, nebo ty záznamy nahráváš třeba do databáze.
Pokud to přes tebe víceméně jen protéká - dostaneš velký string, potřebuješ jen přeforámovat to datum a pošleš ho dál - pak ten tvůj přístup v [#3] není špatný. Jediné co potřebuješ je použít preg_replace_callback. Ten ti umožní tu nalezenou hodnotu transformovat tvojí vlastní funkcí ještě než se vrátí zpět. |
||
Daniel47 Profil |
Keeehi:
Díky moc Keeehi hodně si mi pomohl! Tuhle preg_replace_callback funkci jsem potřeboval.
|
||
Daniel47 Profil |
#12 · Zasláno: 23. 10. 2020, 18:12:53
Ahojte, mám jeden problém když dám do proměné $date tohle:
Wed, 14 Oct 2020 15:24:00 GMT , tak se mi zobrází tohle: 14.10.2020 - 17:24:00
Zdrojový kód: PHP: $date = "Wed, 14 Oct 2020 15:24:00 GMT"; echo($text); echo(date("d.m.Y - H:i:s", strtotime($date))); Nevíte proč je to od dvě hodiny posunuté? A jak to opravit? Budu rád za pomoc. |
||
anonym_ Profil * |
#13 · Zasláno: 23. 10. 2020, 18:50:48
Daniel47:
Protože GMT (a náš letní čas). V PHP tě zajímá timezone. Zbytek si laskavě dohledej. |
||
Daniel47 Profil |
#14 · Zasláno: 23. 10. 2020, 19:51:37
anonym:
Děkuji moc, tohle pomohlo: PHP: $date = new DateTime($date_gmt); $date_x = $date->format("d.m.Y - H:i:s"); |
||
Časová prodleva: 3 roky
|
0