Pouze text - only text Econnect Zpravodajství Informační servis pro NNO
- Kalendář akcí | Práce v NNO | Katalog odkazů | Občan TOPlist
- -
Pouze text - only text
logo Econnectu
pro registrované uživatele pro novináře pouze text English
- Technická podpora
[ econnect.ecn.cz > technická podpora > Úvod PHP ]
-

 O Econnectu

 Novinky

 Technická podpora Můj koutek Podpora (Nejčastěji kladené otázky) Změny a poruchy serverů Nahlášení závady

 Přehled služeb

 Ceník

 Objednávka služeb

 Reference

 Kontakty

Úvod do PHP

PHP je jednoduchý programovací jazyk, sloužící k tvorbě přenositelných internetových aplikací, které se spouští na straně serveru. Jeho výhodou tedy je, že ho lze použít na jakékoliv architektuře, pro kterou existuje interpretr.

Příkazy jazyka PHP se vkládají buď přímo do souborů HTML nebo se používají pro psaní celých programů. Je však nutno u těchto PHP programů (i u PHP příkazů vložených do souborů HTML) použít koncovku, příslušnou PHP skriptu. To závisí na nastavení web serveru, který stránky zpracovává a obvykle zavolá PHP interpretr na soubory s koncovkou php, php3 nebo phtml. Přesné nastavení Vašeho serveru zjistíte u Vašeho správce serveru.

V tomto textu naleznete popis možností jazyka PHP, datové typy a popis základních funkcí. Pro obšírnější popis doporučujeme oficiální stránku projektu PHP, její českou verzi a stránku Jiřího Koska.

Obsah Jednoduchý příklad

V následujícím příkladě si ukážeme vkládání PHP příkazů přímo do souboru HTML. To je vhodné využít například v případě, že máte udělaný grafický design stránek a vkládáte do nich pouze dynamicky generované články.

<HTML>
<HEAD>
  <TITLE>První příklad v PHP</TITLE>
</HEAD>
<BODY>
  <STRONG>Náš první skript</STRONG>
<?
/*
Toto je nas prvni PHP skript,
urceny pro vypis cisel
*/
  for ($i=10; $i>=0; $i--) {
// vypsani cisel, kazde na jeden radek
    echo "$i<br>n";
  }
?>
</BODY>
</HTML>

Tento jednoduchý příklad nám ukazuje, jak se kód PHP odděluje od HTML kódu. V tomto případě jsou použity oddělovače <? a ?>. Lze však použít také <?php a ?> nebo (pokud je nastaven interpretr PHP na tuto možnost) použít oddělovače jako v ASP (tedy <% a %>).

Dále je zde vidět použití poznámek, které využívají C/C++ syntaxe, doporučují se buď na jeden řádek vhodné // nebo párové /* a */.

Datové typy

PHP podporuje běžné datové typy známé z jiných programovacích jazyků. Jsou to:

  • celé číslo (integer)
  • reálné číslo (floating point)
  • řetězec (string)
  • pole (array)

Práce s nimi je podobná jako v jiných jazycích. Avšak s tím hlavním rozdílem, že je programátor nemusí udávat a jsou určeny automaticky při provádění skriptu. Výhodou je automatické převádění mezi jednotlivými typy. Lze tedy bez problémů sčítat čísla například v řetězcích.

Velmi jednoduše se také pracuje s polem, které může být jednorozměrné nebo vícerozměrné, skalární, asociativní a nebo kombinované. Nejjednodušším vytvořením pole je použití "závorkové" syntaxe. Dále lze pole vytvořit pomocí funkce Array(). V následujícím příkladu si ukážeme některé z možností:

<?
// jednorozmerne pole, prvni index je 0
$jednorozmerne[0]="nazdarek";
// dalsi je index 1
$jednorozmerne[1]="ahoj";
// tento prikaz prida do pole retezec s indexem 2
$jednorozmerne[]="dobry den";
// a retezec s indexem 3
$jednorozmerne[]="nashledanou";

// vypis pole $jednorozmerne:
for ($i=0; $i<count($jednorozmerne); $i++) {
  echo "$jednorozmerne[$i]<br>n";
}

$jinepole["Z"]="posledni pismeno abecedy";
echo $jinepole["Z"]."<br>n";

?>
Proměnné a konstanty

Proměnné se skládají ze znaku $ a indentifikátoru, který se může skládat z libovolného počtu písmen, čísel, podtržítek a ASCII znaků s kódy od 127 do 255. Identifikátory musí začínat buď písmenem nebo podtržítkem a je potřeba si uvědomit, že PHP interpretr rozlišuje malá a velká písmena (ted proměnná $Promenna je jiná proměnná než například $PrOmEnNa).

Konstanty se mohou definovat pomocí příkazu define(). Konstanty nelze po jejich definování změnit ani zrušit.

Operátory

Zde naleznete seznam operátorů a u některých významných i ukázky jejich použití.

  • aritmetické operátory - plus (+) mínus (-), krát (*), děleno (/), modulo (% - udává zbytek po celočíselném dělení)
  • operátory přiřazení - například přiřazení (=), přičtení hodnoty k proměnné (+=) nebo spojení dvou výrazů (.= - výhodné pro řetězce)
  • bitové operátory - porovnání dvou hodnot bit po bitu a bitové posuny (operátory and (&), or (|), xor (^), not (~) a posuny vlevo (<<) a vpravo (>>).
  • operátory porovnání - porovnání dvou hodnot (jsou shodné (==), jsou shodné a mají stejný datový typ (===), nejsou shodné (!= nebo <>), menší než (<), větší než (>), menší nebo shodný (<=), větší nebo shodný (>=) a ternární operátor ?.
  • operátor pro kontrolu chybových hlášení @
  • operátor pro spouštění příkazů shellu '
  • operátory inkrementace a dekrementace se používají, pokud potřebujete přičíst/odečíst jedničku od proměnné. Lze vejdříve provést operace a pak vrátit novou hodnotu (++$a nebo --$a) nebo nejdříve vrátit hodnotu a pak teprve provést operaci ($a++ nebo $a--)
  • logické operátory jsou and (and nebo &&, or (or nebo ||), xor a not (!).
  • operátory pro práci s řetězci jsou spojení řetězců (.) a přiřazovací operátor .=.
Řídící struktury if..elseif..else

Tato řídící struktura slouží pro rozdělení běhu programu na více různých akcí. Je výhodná pro menší počet podmínek. Následuje jednoduchý ukázkový příklad:

if ($a > $b) {
    echo "a je vetsi nez b";
} elseif ($a == $b) {
    echo "a je shodne s b";
} else {
    echo "a je mensi nez b";
}
switch

Tato řídící struktura má velmi podobnou funkci, také větví program do více akcí. Rozdílem je, že příkaz switch porovnává pouze jednu proměnnou a podle výsledku pak pomocí příkazu case pak program větví. Pokud výraz žádné podmínce nevyhovuje, použije se sekce default. K ukončení každé větve slouží příkaz break, bez něj by se projížděly všechny větve. Pro lepší názornost následuje ukázkový příklad, který porovnáná kódy zapsané pomocí příkazu switch a příkazu if:

switch ($i) {
    case 0:
        echo "i se rovna 0";
        break;
    case 1:
        echo "i se rovna 1";
        break;
    case 2:
        echo "i se rovna 2";
        break;
}
if ($i == 0) {
    echo "i se rovna 0";
}
if ($i == 1) {
    echo "i se rovna 1";
}
if ($i == 2) {
    echo "i se rovna 2";
}
while

while je velmi jednoduchý cyklus, který vykonává příkazy, dokud je podmínka pravdivá. Tato podmínka se vyhodnocuje na začátku příkazu, proto když není pravdivá, příkazy se neprovedou. Jednoduchý příklad vypisuje čísla 1 až 10.

$i = 1;
while ($i <= 10) {
  echo $i++; // vytiskne obsah promenne i
             // a potom ji zvetsi o 1
}
do..while

Podmínka do..while je podobná předchozímu příkazu, ale podmínka je vyhodnocována až na konci. Vždy tedy cyklus proběhne alespoň jednou. Ukázkový příklad ukazuje, že opravdu proběhne pouze jednou (proměnná i se rovná nule a to v nevyhoví podmínce $i > 0.

$i = 0;
do {
  echo $i;
} while ($i > 0);
for

Příkaz for je mocný nástroj, pro tvorbu cyklů. Obsahuje inicializační část, která se provede pouze jednou a nastaví potřebné proměnné, dále část podmínkovou, která se provádí na začátku každého cyklu a příkazy se neprovedou, pokud je podmínka neplatná. Poslední částí je část iterační, která mnění pomocnou proměnnou. Vše bude zřejmé z následujícího příkladu:

for ($i=0; $i<10; $i++) {
  echo $i;
}
funkce

PHP umožňuje samozřejmě také tvorbu uživatelsky definovaných funkcí. Jejich tvorba je podobá jiným programovacím jazykům. V příkladu si ukážeme funkci, která vrací true, pokud je zadané rodné číslo v pořádku.

function validace_rc($rc) {
  if (StrChr($rc/11, ".") { $retval = FALSE; }
  else { $retval = TRUE; }
  return $retval;
}
Popis základních příkazů Příkazy pro výpis informací na obrazovku echo

echo slouží pro výpis jednoho nebo více výrazů.

print

print slouží opět pro výpis řetězce. Navíc vrací návratovou hodnotu true, pokud se výpis podařil, nebo false, pokud ne.

U těchto dvou funkcí (nebo spíše konstrukcí jazyka) a vůbec u řetězců je potřeba dávat pozor na znaky, jako jsou uvozovky ("), jednoduché uvozovky (') a zpětné lomítko (). Pokud chcete je v řetězci vytisknout, musíte z nich vytvoři tzv. escape výraz (pro uvozovku to je "), což znamená před každý z techto znaků přidat zpětné lomítko.


Příkazy pro spolupráci s databází MySQLÚvod do MySQL

>>Úvod do MySQL<<



mysql_connect(jmeno_serveru, pristupove_jmeno, pristupove_heslo)

Tato funkce slouží pro připojení k MySQL. Funkce vrací odkaz na příslušný MySQL server a je důležité si tuto hodnotu uložit, protože se pak používá u většiny příkazů pro tento odkaz je potřeba pro ukončení spojení s MySQL serverem pomocí příkazu mysql_close.

mysql_close(odkaz_na_spojeni)

Slouží k uzavření určitého spojení s MySQL serverem. Pokud není zadán odkaz_na_spojeni, pak se uzavře posledně otevřené spojení.

mysql_error() a mysql_errno()

Tyto funkce se mohou zapisovat za každý příkaz, který spolupracuje s MySQL databází. První z nich (mysql_error) vrací řetězec s chybovým hlášením a mysql_errno vrací číselné označení nastalé chyby.

mysql_select_db(jmeno_databaze, odkaz_na_spojeni)

Vybere a nastaví jako aktivní určitou databázi, nad touto databází se pak budou provádět dotazy. Pokud není zadán parametr odkaz_na_spojeni, myslí se tím posledně otevřené spojení s MySQL serverem.

mysql_query(dotaz, odkaz_na_spojeni)

Příkaz mysql_query provede SQL příkaz nad databází, která je určena spojením odkaz_na_spojeni. Příkaz vrací odkaz, který se pak například používá pro získávání jednotlivých řádek, odpovídajících SQL příkazu.

mysql_fetch_row(odkaz)

Příkaz php_fetch_row vezme řádek, vyhovující dotazu (na který se odkazujeme parametrem odkaz. Výsledek je uložen v očíslovaném poli, které obsahuje tolik položek, kolik má tabulka sloupců a jednotlivé položky jsou číslovány od 0.

mysql_fetch_array(odkaz)

Příkaz mysql_fetch_array je podobný předchozímu příkazu, ale řádek je vracen v asociativním poli, kdy klíčem je jméno sloupce a hodnotou jeho obsah.

mysql_num_rows(odkaz)

Příkaz mysql_num_rows vypisuje počet řádek, které vyhověli SQL dotazu. Tento příkaz však slouží pouze pro SQL dotaz SELECT.

mysql_affected_rows(odkaz)

mysql_affected_rows se chová obdobně jako předchozí příkaz, ale s tím rozdílem, že slouží pro SQL příkazy INSERT, UPDATE nebo DELETE.

Jednoduchý příklad přístupu do MySQL databáze

Pro správný běh se předpokládá databáze test, ve které je tabulka tabulka_test a v ní sloupce cislo a komentar. Je zde použita většina popsaných příkazů.

<?
$db_spojeni = mysql_connect("localhost", "pristupove_jmeno", "pristupove_heslo") or die(mysql_error());
$db_vysledek = mysql_select_db("test", $db_spojeni) or die(mysql_error());

$vysledek_dotazu = MySQL_query("SELECT * FROM tabulka_test", $spojeni)
  or die(mysql_error());

while ($zaznam = MySQL_Fetch_Array($vysledek_dotazu)) {
  echo "Záznam č. ". $zaznam["cislo"] ." obsahuje ". $zaznam["komentar"] ."<br>"; }

$pocet_radek = MySQL_num_rows($vysledek_dotazu);
echo "Tabulka <b>tabulka_test</b> obsahuje ". $pocet_radek ." radek <br<";
$db_vysledek = MySQL_close($db_spojeni);
?>



Funkce pro práci s datem a časem time

Funkce time vrací čas ve formátu timestamp. Je to počet sekund od dne 1.1.1970 a od 00:00. Toto datum se bere jako vznik operačního systému UNIX.

mktime(hodiny, minuty, sekundy, mesic, den, rok)

Funkce mktime vytvoří ze zadaných časových hodnot timestamp. To je pak použitelné pro následující příkaz.

date(format, timestamp)

Příkaz date slouží pro tisk formátovaného data, podle formátovacího řetězce. Pokud je zadán timestamp, datum se počítá z něj, jinak se vezme aktuální datum.

Formátovací řetězec může použít tyto formátovací znaky:

  • a - tiskne "am" nebo "pm"
  • A - tiskne "AM" nebo "PM"
  • B - internetový čas firmy Swatch
  • d - den v měsíci, 2 číslice i s nulami, tj. od "01" do "31"
  • D - den v měsíci textově, 3 znaky
  • F - jméno měsíce
  • g - hodiny ve 12ti hodinovém formátu bez nul na začátku, tj. od "1" do "12"
  • G - hodiny ve 24 hodinovém formátu bez nul na začátku, tj. od "0" do "23"
  • h - hodiny, 12ti hodinový formát, tj. od "01" do "12"
  • H - hodiny, 24 hodinový formát, tj. od "00" do "23"
  • i - minuty, od "00" do "59"
  • j - den v měsíci bez nul, od "1" do "31"
  • l - dlouhý název dne měsíce
  • m - měsíc, od "01" do "12"
  • M - název měsíce, krátky na 3 znaky
  • n - měsíc bez nul na začátku, od "1" do "12"
  • s - sekundy, od "00" do "59"
  • T - jméno časové zóny nastavené na počítači
  • Y - rok, 4 číslice
  • y - rok, 2 číslice
Příklad na datové a časové funkce
<?
$dnes = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));
$minuly_mesic = mktime(0,0,0,date("m")-1,date("d"), date("Y"));
$pristi_rok = mktime(0,0,0,date("m"), date("d"), date("Y")+1);

echo "Dnes je ". date("j.n.Y", $dnes) ."<br>n";
echo "Pred mesicem bylo ". date("j.n.Y", $minuly_mesic) ."<br>n";
echo "Pristi rok bude ". date("j.n.Y", $pristi_rok) ."<br>n";
?>
Funkce pro odesílání e-mailů

Funkce slouží pro odesílání e-mailových zpráv na určitou adresu. Základní syntaxe je Mail($komu, $predmet, $zprava, $hlavicky). Pro správnou funkci je třeba mít nastaven SMTP server. Následující příklad ukáže, jak odeslat jednoduchou zprávu v češtině:

<?
// funkce pro odesilani mailu v cestine
function cz_mail($komu, $predmet, $zprava, $hlavicky) {
  $zprava = StrTr($zprava,"x8Ax8Dx8Ex9Ax9Dx9E","xA9xABxAExB9xBBxBE");
  $zprava = Base64_Encode($zprava);
  $hlavicky .= "nMIME-Version: 1.0n".
    "Content-Type: text/plain; charset="iso-8859-2"n".
    "Content-Transfer-Encoding: base64n";
  mail($komu, $predmet, $zprava, $hlavicky);
}

$komu = "nekdo@ecn.cz";
$predmet = "Důležitá zpráva";
$zprava = "Toto je velice důležitá zprávan".
          "určitě si ji přečtěte";
$hlavicky = "From: odesilate@nekde.cz";

cz_mail($komu, $predmet, $zprava, $hlavicky);
?>
Funkce pro práci s poli

Pro vytvoření pole slouží funkce Array, kterou jsme si popsali již v popisu polí. Nad takto vytvořeným polem se pak lze pohybovat, vypisovat nebo upravovat jednotlivé položky pomocí následujících funkcí:

count() a SizeOf()

Tyto funkce vrací počet prvků, uložených v proměnné, která většinou bývá typu pole.

List()

Tato funkce slouží k nastavení proměnných podle hodnot, obsažených v poli. Její výhodou je, že může mít libovolný počet parametrů. Lze tedy načíst v jednom příkazu do čtyř proměnných pole se čtyřmi prvky. Dále lze vynechávat některé proměnné a tím i vynechávat některé prvky v poli.

Each()

Funkce Each() slouží k procházení pole. Vzhledem k tomu, že v poli existuje ukazatel na aktuální položku, lze tuto funkci jednoduše použít pro porázení. Tato funkce vrací aktuální hodnotu indexu a obsah položky a ukazatel přesune na další pooložku.

Tuto funkci lze výhodně použít s funkcí předchozí (List), například při načítání polí, které byly poslány metodou post.

<?
reset($HTTP_POST_VARS);
while (list($key, $val) = each($HTTP_POST_VARS)) {
    echo "$key => $val<br>";
}
?>
Current() a Pos(), Next(), Prev(), End(), Reset(), Key()

První dvě funkce (Current, Pos) vrací hodnotu aktuálního prvku pole. Další slouží pro přechod na následující (Next), předchozí (Prev), poslední (End) a první položku v poli (Reset). Poslední funkce Key zjistí index prvku pole, na který je nastaven ukazatel.

Sort()

Funkce Sort je základní funkcí pro třídění prvků v poli od nejmenšího pro největší. Dále existuje spousta dalších funkcí, pro třídění se speciálními požadavky.

Funkce pro práci s HTTP Header()

Header slouží pro zaslání určité HTTP hlavičky klientovi v odpovědi. Tyto hlavičky musí být odeslány před tím, než skript vygeneruje nějaký HTML kód. Vzhledem k tomu, že popis HTTP hlaviček je nad rámec tohoto dokumentu, doporučujeme k prostudování jejich specifikaci (v angličtině). Zde si uvedeme dvě nejzákladnější a pravděpodobně nejpoužívanější použití:

Automatické přesměrování na jinou stránku provedete pomocí těchto příkazů:

<?
header("Location: http://www.ecn.cz/jina_stranka");
exit;
?>

Pro vygenerování stránky 404 (stránka nenalezena) lze s úspěchem použít následující příkaz:

<?
header("HTTP/1.0 404 Not found");
?>
SetCookie()

Funkce slouží pro uložení cookie v klientovi. Formát této funkce je:

SetCookie($jmeno, $hodnota, $platnost, $cesta, $domena, $zabezpeceni)
Všechny parametry, kromě parametru $jmeno, jsou nepovinné. Pro vymazání určité cookie z klienta zašleme pouze samotné jméno cookie. Tato funkce, stejně jako předchozí funkce, musí být volána před vygenerováním jakéhokoliv výstupu skriptu. Výhodou je pak, že s cookie v klientovi se pracuje stejně jako s jakoukoli jinou proměnnou (tedy cookie se jménem username bude vystupovat jako proměnná $username).

Platnost cookie se zadává v sekundách jako timestamp (počet sekund od 1.1.1970). Parametry $cesta a $domena omezují, pro které domény a cesty v nich je cookie platná. Parametr $zabezpeceni funguje pouze pokud se komunikace provádí přes šifrovaný kanál SSL.

<?
// ulozeni cookie username s dobou platnosti 1 hodina
SetCookie("username", "ecnuser", Time()+3600);
?>
Funkce pro práci s regulárními výrazy EReg() a ERegI()

Pomocí těchto funkcí zjišťujeme, zda řetězec vyhovuje určitému regulárnímu výrazu. První z funkcí dále bere v potaz velikosti písmen, druhá velikosti písmen nerozlišuje.

Funkce má syntaxi EReg($vyraz, $retezec, $shody), kde vyraz je regulární výraz, který je vyhledáván v řetězci retezec. Pokud je použit parametr shody, jsou v něm uloženy jednotlivé vyhovující podvýrazy. V tomto poli je pod indexem 0 uložena část řetězce, která vyhovuje celému regulárnímu výrazu.

Následující příklad převede datum z formátu YYYY-MM-DD na formát DD.MM.YYYY a vytiskne ho:

<?
if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $casti)) {
  echo "Datum: $casti[3].$casti[2].$casti[1]";
} else {
  echo "Spatny format data: $datum";
}
?>
EReg_Replace() a ERegI_Replace()

Funkce slouží pro nahrazení řetězce podle regulárního výrazu. Syntaxe je EReg_Replace($vyraz, $nahrada, $retezec), kde $vyraz vyhledá v řetězci $retezec část, která je pak nahrazena řetězcem $nahrada.

Druhá funkce pracuje shodně, ale nebere v potaz rozdílné velikosti písmen.

<?
$retezec = "Toto je test";
$retezec2 = ereg_replace(" je", " byl", $retezec);
echo $retezec ."==>". $retezec2;
?>
Split()

Funkce Split rozdělí řetězec podle zadaného výrazu na části a uloží je do pole. Lze jednoduše použít například k rozdělení věty na slova:

<?
$veta = "Toto je pokusna veta";
$slova = Split("[^[:alnum:]]+", $veta);
// v promenne $slova jsou jednotliva slova ze $veta
// oddelene vsim, co neni pismeno nebo cislo
?>
Základní funkce pro práci s řetězci Chop(), Trim(), LTrim(), RTrim()

Tyto funkce odstraňují mezery ze začátku řetězce (LTrim), z konce řetězce (RTrim) a ze začátku i konce řetězce (Trim). Funkce Chop odmazává mezery a tabulátory z konce řetězce.

Implode(), Join() a Explode()

Funkce Implode($spojka, $pole) spojí prvky v poli $pole pomocí zadaného řetězce $spojka. Funkce Join je shodná s touto funkcí.

Funkce Explode funguje podobně jako funkce Split a pokud nepoužíváte na rozdělení řetězce regulární výrazy, je tato funkce mnohem rychlejší.

NL2BR()

Užitečná funkce, která převádí konce řádků (speciální znak n) na <BR>.

StrCmp()

Funkce StrCmp($retezec1, $retezec2) porovnává řetězce $retezec1 a $retezec2 a vrací zápornou hodnotu, pokud je $retezec1 menší než $retezec2. Kladnou hodnotu vrací, pokud je $retezec1 větší než $retezec2. Při jejich shodě vrací 0. Porovnání je citlivé na velikost písmen.

StrChr()

Funkce StrChr($retezec, $znak) hledá první výskyt znaku $znak v řetězci $retezec a vrací jeho obsah až od tohoto znaku včetně.

<?
echo StrChr("abcdefg", "c"); // vytiskne cdefg
?>
StrLen()

Funkce vrací délku řetězce, který je zadán jako parametr.

StrPos()

Funkce StrPos($retezec, $hledany_text) vrací pozici řetězce $hledany_text v řetězci $retezec. Funkce vrací hodnotu FALSE, pokud nebyl výskyt nalezen. Je nutno zdůraznit, že pokud je znak nalezen na prvním místě v řetězci, vrací funkce hodnotu 0, která je však vyhodnocena jako FALSE. Následující část kódu ukazuje, jak docílit správných výsledků.

<?
// pro PHP 4.0b3 a novejsi:
$pozice = strpos("hledany text", $retezec);
if ($pozice === false) { // !!! tri rovnitka !!!
    // nenalezeno
}

// verze starsi nez 4.0b3 (i verze 3.x)
$pozice = strpos("hledany text", $retezec);
if (is_string($pozice) && !$pozice) {
    // nenalezeno
}
?>
StrStr()

Funkce StrStr($retezec, $hledany_text) hledá první výskyt textu $hledany_text v řetězci $retezec a vrací jeho obsah až od tohoto výskytu včetně. Funkce vrací FALSE, pokud řetězec hledaný text neobsahuje.

$email = "pavel@ecn.cz";
$domena = strstr($email, "@");
echo $domena; // vytiskne ecn.cz
SubStr()

Funkce SubStr($retezec, $zacatek, $delka) vrací část zadaného řetězce $retezec, která je určena pozicí prvního znaku ($zacatek) a počtem znaků ($delka). Pokud je pozice záporné číslo, je pozice počítána od konce řetězce. Pokud délku uvedeme jako záporné číslo, vracený řetězec bude končit o délku znaků před koncem řetězce.

echo substr("abcdef", 1); // vypise "bcdef"
echo substr("abcdef", 1, 3); // vypise "bcd"
echo substr("abcdef", -1); // vypise "f"
echo substr("abcdef", -2); // vypise "ef"
echo substr("abcdef", -3, 1); // vypise "d"
echo substr("abcdef", 1, -1); // vypise "bcde"
Funkce pro práci s URL adresami URLEncode() a URLDecode()

Pro předávání parametrů pomocí URL je třeba veškeré nealfanumerické znaky kromě znaků '.', '-' a '_' zakódovat, aby se správně přenesly. Pomocí funkce URLEncode jsou všechny tyto znaky převedeny na šestnáctková čísla, začínající znakem procento ('%') a mezera je nahrazena znakem plus ('+'). Funkce URLDecode() slouží ke zpětnému rozkódování.

echo "<a href="hledej.php?dotaz=" . urlencode($dotaz). "">Hledej!</a>";
Funkce pro práci se soubory File()

Funkce File($jmeno_souboru) je užitečnou funkcí, která načte obsah celého souboru do pole, kde řádky v souboru pak jsou jednotlivé položky pole. Funkci lze použít i pro přenos protokolem HTTP/1.0 (pokud $jmeno_souboru začíná na http://) nebo pro přenos souboru přes protokol FTP (pokud $jmeno_souboru začíná na ftp://).

<?
$obsah = file("http://www.ecn.cz");
while (list($cislo_radky, $radka) = each($obsah)) {
  echo "Radek ". $cislo_radky .": " . $radka . "<br>n";
}
?>
File_Exists()

Funkce zjišťuje, zda zadaný soubor existuje. Pokud ano, vrací TRUE, jinak vrací FALSE. Is_Dir(), Is_File(), Is_Executable(), Is_Readable(), Is_Writeable()

Jak již je patrné z názvů, tyto funkce slouží ke zjištění, zda zadaný parametr je adresář (Is_Dir), soubor (Is_File), spustitelný soubor (Is_Executable) a zda lze soubor číst (Is_Readable) nebo do něj zapisovat (Is_Writeable).

FileSize()

Funkce zjistí velikost souboru, jehož jméno je zadané jako parametr.

BaseName(), DirName()

Funkce BaseName($cesta) zjistí z úplně zadané cesty $cesta pouze jméno souboru. Naopak funkce DirName($cesta) vypíše z úplně zadané cesty pouze adresářovou část.

<?
$cesta = "/var/home/pavel/www/pokus.php";
echo basename($cesta); // vypise 'pokus.php'
echo dirname($cesta); // vypise '/var/home/pavel/www'
?>
Konfigurace a informace o PHP PHPInfo

Tato funkce slouží pro detailní výpis informací o PHP a možných rozšířeních v něm použitých. Je vhodné použít pro zjištění, zda na Vašem serveru PHP vůbec funguje

PHPVersion

Funkce vrací řetězec, který obsahuje číslo verze interpreteru PHP.

GetLastMod

Funkce vrací timestamp poslední změny PHP skriptu. Pro vypsání této změny na Vašich stránkách lze s výhodou využít tento příklad, který se přidá například na konec každé Vaší stránky:

<?
echo "Datum posledni modifikace: ". date("d.m.Y", GetLastMod());
?>
Die

Funkce Die($hlaska)slouží pro ukončení běhu skriptu a vypíše hlášení $hlaska. Je to vhodné například pro ukončení skriptu při nějaké zásadní chybě.

Matematické funkce

Interpreter PHP má v sobě zabudovány matematické funkce, se kterými je možné počítat běžné výpočty. Jsou to klasické fukce jako Abs(), Log(), Exp(), Pi(), dále výpočet mocnin a druhé odmocniny (Pow(), Sqrt()) a funkce goniometrické (Sin(), Cos(), Tan()) a funkce cyklometrické (ASin(), ACos(), ATan()).

Pro zaokrouhlování slouží funkce Ceil() (zaokrouhlení desetinného čísla nahoru), Floor() (zaokrouhlení desetinného čísla dolů) a Round() pro zaokrouhlení desetinného čísla. Pro zjištění minima a maxima ze zadaných hodnot slouží funkce Min() a Max().

Lze zde dále nalézt funkce pro převod mezi různými druhy soustav. Převádět lze z desítkové do binární a naopak (funkce BinDec(), DecBin()), z osmičkové do desítkové a naopak (funkce OctDec(), DecOct()) a z desítkové do šestnáctkové a naopak (funkce DecHex(), HexDec()). Dále lze převádět stupně na radiány a naopak (funkce Rad2Deg() a Deg2Rad()).

Pokud potřebujeme generátor náhodných čísel, musíme ho nejdříve inicializovat pomocí funkce SRand($seed) nodnotou $seed. Tuto hodnotu je vhodné pokaždé volit jinak, lze s výhodou použít například aktuální čas např. pomocí funkce MicroTime(). Náhodnou hodnotu pak vygenerujeme pomocí funkce Rand() a pomocí funkce GetRandMax můžeme zjistit, jakou největší hodnotu může náhodné číslo dosahovat.

Síťové funkce GetHostByAddr(), GetHostByName(), GetHostByNameL()

První dvě funkce slouží pro zjištění jména počítače (doménové jméno) z IP adresy a pro zjištění IP adresy z doménového jména. Třetí funkce vrátí všechny IP adresy, příslušící zadanému doménovému jménu.

Konstanty __FILE__

Tato konstanta obsahuje jméno souboru, ve kterém je uložen právě zpracovávaný skript

__LINE__

Zde je uloženo číslo řádku, na kterém je konstanta použita

M_PI

Zde je uložena přibližná hodnota Ludolfova čísla (PI)

PHP_OS

Konstanta obsahuje jméno operačního systému, na kterém běží interpreter PHP

PHP_VERSION

V konstantě je uloženo číslo verze používaného PHP

Proměnné

V následující tabulce naleznete seznam proměnných, které jsou přístupné prováděnému skriptu a jsou v něm použitelné.

$CONTENT_LENGTH Obsahuje délku dat, zasílaných skriptu metodou POST
$CONTENT_TYPE MIME typ dat zasílaných metodou POST
$HTTP_COOKIE_VARS Asociativní pole, obsahující všechny cookies
$HTTP_GET_VARS Asociativní pole, obsahující parametry předané metodou GET
$HTTP_POST_VARS Asociativní pole, obsahující parametry předané metodou POST
$PATH_INFO Cesta ke skriptu, který má být zpracován
$PATH_TRANSLATED Skutečná cesta ke skriptu, který má být zpracován
$PHP_AUTH_PW Heslo získané pomocí HTTP autentifikace
$PHP_AUTH_TYPE Typ HTTP autentifikace, nejčastěji basic
$PHP_AUTH_USER Uživatelské jméno, získané při HTTP autentifikaci
$PHP_SELF Jméno právě prováděného skriptu
$QUERY_STRING Nerozkódovaná data, předaná metodou GET
$REMOTE_ADDR IP adresa, ze které přišel požadavek
$REMOTE_HOST Doménové jméno počítače, ze kterého přišel požadavek
$REQUEST_METHOD Způsob předávání parametrů (POST nebo GET)
$SCRIPT_FILENAME Jméno souboru, ve kterém je uložen právě prováděný skript
$SCRIPT_NAME Jméno právě prováděného skriptu
$SERVER_NAME Adresa serveru (IP, doména nebo alias)
$SERVER_PORT Číslo portu, na kterém běží WWW server
$SERVER_PROTOCOL Jméno a verze protokolu, kterým přišel požadavek (nejčastěji HTTP/1.0 nebo HTTP/1.1)
$SERVER_SOFTWARE Jméno a verze WWW serveru
Funkce pro práci s proměnnými

Pro zjištění, zda je funkce určitého typu, slouží následující funkce, které vracejí TRUE, pokud je proměnná stejního typu. Tyto funkce jsou: is_array(), is_double, is_float(), is_int(), is_integer, is_long(), is_object(), is_real(), is_string. Pokud byste chtěli přímo jméno datového typu ('string', 'integer', ...), použijte funkci gettype(), která toto jméno vrací jako řetězec. Funkce, která se chová obdobně, ale slouží pro změnu typu datové proměnné, se nazývá settype($promena, $typ) a proměnná $typ obsahuje jméno nového datového typu.

Pro zjištění, zda je proměnná prázdná, slouží funkce Empty(). Pro zjištění, zda je proměnná zinicializována, se používá funkce IsSet(). Pro zrušení proměnné slouží funkce UnSet(). Rozdíl mezi těmito funkcemi bude zřejmý z příkladu.

<?
// zde bude Empty($prom) == true a IsSet($prom) == false
$prom="";
// zde bude Empty($prom) == true a IsSet($prom) == true
$prom="ahoj";
// zde bude Empty($prom) == false a IsSet($prom) == true
unset($prom);
// zde bude Empty($prom) == true a IsSet($prom) == false
?>

Pro převod hodnot slouží funkce DoubleVal() (převod hodnoty na typ double), IntVal() (na typ integer) a StrVal() (na řetězec).

Služby Econnectu

ToolkitUnavuje vás tvorba www stránek v HTML?
Nemá váš webmaster čas na jejich aktualizaci?
S publikačním systémem TOOLKIT to zvládnete SNADNO, RYCHLE A SAMI:
VYZKOUŠEJTE ZDARMA!
vytisknoutvytisknout
Logo Econnectu Easy CONNECTion - snadné spojení mezi lidmi, kteří mění svět
Webhosting, webdesign a publikační systém Toolkit - Econnect
Econnect,o.s.; Českomalínská 23; 160 00 Praha 6; tel: 224 311 780; econnect@ecn.cz