Hezké formátování čísel v PHP

Taková krásná funkce v PHP je number_format. Umí zaokrouhlit a zároveň doplnit oddělovací znaky.

Například:
$vystup=number_format($puvodni_cislo,0,”,”,” “);
nám vezme číslo uložené v proměnné $puvodni_cislo a:

  • zaokrouhlí ho na 0 desetinných míst
  • použije desetinnou čárku (ta je v pevních dvojitých uvozovkávh a může místo ní být i jiný znak
  • oddělí tisíce mezerou, například 2 000 000 (mezera je v posledních dvojitých uvozovkách a také může místo ní být jiný znak.
  • Export do Excelu v PHP

    Pro exportování do excellu z PHP jsem našel dvě třídy:
    PHP Simple Excell Generator na SourceForge
    a
    PHP Write Excell třída, která byla původně napsaná v Perlu

    Tak uvidíme která bude lepši. Ta druhá, německá ma alespoň příklady a dokumentace se dá získat z Perlovského originálu. Ta ze SourceForge nemá nic.

    UPDATE
    Tak po hledání po všech čertech jsem nakonec našel nejlepší pomoc doma, na serveru www.interval.cz. Byl tam jednoduchý script, který mi funguje (narozdíl od těch předchozích). Navíc jsem si ho dovolil trošku vylepšit, protože ten Intervaláckej pouze vytvářel soubor a já ho chtěl hned otevřít.

    Tento script je treba akorát si ho dát do nějakého .php souboru a spustit. Zároveň je třeba vytvořit v adresáči kte je ten script vytvořit adresář “exporty” a nachmolodat ho na 777 nebo “a+w”.

    Zároveň do proměnné $export uložíme v HTML kódování obsah Excellu, který chceme otevřít.

    $soubor=”exporty/tabulka.xls”;
    $fp=FOpen($soubor,”w”); // Otevřeme soubor tabulka.xls, pokud existuje, bude smazán, jinak se vytvoří nový soubor
    FPutS($fp,$export); // Zapíšeme do souboru obsah
    Fclose($fp); // Zavřeme soubor
    header(“Content-Type: application/x-msexcel; name=$soubor”);
    header(“Content-Disposition: inline; filename=$soubor”);
    $fh=fopen($soubor, “rb”);
    fpassthru($fh);
    unlink($soubor);

    Datumy v PHP

    Několik funkcí pro práci s datumy v PHP:

    Pokud máme proměnnou $retezec ve formátu DD.MM.YYYY, dostaneme z ní jednotlivé položky datumu následujícím způsobem:
    $den=substr($retezec,0,2);
    $mesic=substr($retezec,3,2);
    $rok=substr($retezec,6,4);

    Když pak chceme položky spojit do php timestampu, použijeme
    $timestamp=mktime(0,0,0,$mesic,$den,$rok);

    První tři nuly označují hodiny, minuty, vteriny, takže pokud chceme uložit poslední vteřinu daného dne, použijeme
    $timestamp=mktime(23,59,59,$mesic,$den,$rok);

    Když pak z timestampu chceme dostat jednotlivé položky zpátky, dostaneme je následujícím způsobem (promenna $vyber_start_timestamp je datum v timestamp formatu:
    $datum=strftime(“%D, %T”,$vyber_start_timestamp); (datum ve formátu MM/DD/YYYY HH:MM:SS)
    $datum2=date(“d M,Y”,$timestamp); (datum ve formátu DD Mesic zkratka slovne, YYYY)
    $rok=strftime(“%Y”,$vyber_start_timestamp);
    $mesic=strftime(“%m”,$vyber_start_timestamp);
    $kolikatyho=date(“d”,$vyber_start_timestamp);
    $tyden=strftime(“%W”,$vyber_start_timestamp);

    Ostatní formátovací znaky funkce date() jsou:
    y … rok jako dvojčíslí (00)
    Y … rok jako čtyřčíslí (2000)
    L … 0 (nepřestupný rok) nebo 1 (přestupný rok)
    z … číslo dne v roce (001-365)
    m … číslo měsíce (01-12)
    n … číslo měsíce (bez případné úvodní nuly, 1-12)
    M … anglická zkratka názvu měsíce (Jul)
    F … anglický název měsíce (July)
    d … číslo dne v měsíci (01-31)
    j … číslo dne v měsíci (bez případné úvodní nuly, 1-31)
    t … počet dní v daném měsíci (28-31)
    S … anglická koncovka čísla dne v měsíci (st, nd, rd, th)
    D … anglická zkratka názvu dne v týdnu (Mon)
    l … anglický název dne v týdnu (Monday)
    w … číslo dne v týdnu (0-6 nebo 1-7 v závislosti na verzi PHP – neděle má číslo 0 nebo 7)
    h … hodiny (01-12)
    g … hodiny (bez případné úvodní nuly, 1-12)
    H … hodiny (01-23)
    G … hodiny (bez případné úvodní nuly, 1-23)
    a … am/pm (dopoledne/odpoledne)
    A … AM/PM (dopoledne/odpoledne)
    i … minuty (00-59)
    s … sekundy (00-59)
    U … počet sekund od 1. ledna 1970
    W … číslo týdne podle ISO-8601