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();
Ale nevím jak to udělat.

Budu rád za rady!
anonym_
Profil *
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 *
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>
dát tohle:
<pubDate>22.11.2020 - 11:47:00</pubDate>

Upozorňují je to XML(RSS).
anonym_
Profil *
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
anonym:
Ok, díky...
Keeehi
Profil
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
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 *
Daniel47:
Protože GMT (a náš letní čas). V PHP tě zajímá timezone. Zbytek si laskavě dohledej.
Daniel47
Profil
anonym:
Děkuji moc, tohle pomohlo:
PHP:
$date = new DateTime($date_gmt);
$date_x = $date->format("d.m.Y - H:i:s");

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0