Skloňování v PHP pro začátečníky

Zkouška v prohlížeči

V prohlížeči si otevřeme adresu https://www.sklonovani-jmen.cz/api?klic=klic&pad=5&jmeno=Adelaida. Na té stránce by se mělo vypsat paní Adelaido, což je pátý pád jména Adelaida.
Když parametr pad změníme třeba na dvojku (https://www.sklonovani-jmen.cz/api?klic=klic&pad=2&jmeno=Adelaida), na stránce se vypíše paní Adelaidy. Takže to funguje.

V adrese je jako hodnota parametru klic uvedeno klic. Ten je určený na testování služby. Je je omezený tím, že jím lze skloňovat jen pár jmen, což ale na testování stačí. Po registraci získáme vlastní unikátní klíč, kterým denně můžete poslat 10 dotazů zdarma. Byla by škoda, aby se ten limit vyplýtval už během pokusů o rozběhání našeho skriptu.

V dokumentaci najdeme řadu dalších parametrů, díky jejichž přidání do adresy můžeme vrácené tvary upravit podle svých představ.

Zavolání adresy skriptem

Nyní potřebujeme, aby danou stránku zavolal přímo náš skript. Protože to nechceme zbytečně komplikovat, použijeme PHP funkci file_get_contents, která vrací obsah stránky, kterou má uvedenou v parametru.

<?php

$vracena_hodnota = file_get_contents("https://www.sklonovani-jmen.cz/api?klic=klic&pad=5&jmeno=Adelaida"); // Jako parametr použijeme adresu, kterou jsme zkoušeli v prohlížeči

echo htmlspecialchars($vracena_hodnota);

Po uložení by se nám na naší stránce mělo vypsat „paní Adelaido“. Na tom už se dá stavět.

Univerzálnější řešení

Upravíme si skript tak, aby byl univerzálnější:

<?php

$pad = "5"; // Označení požadovaného pádu. Pro oslovování použijeme pátý

$klic_api = "klic";

$jmeno = "Adelaida"; // Jméno, které budeme ohýbat

$jmeno_url = urlencode($jmeno); // Abychom mohli použít jméno s diakritikou či mezerou, musíme hodnotu v URL escapovat

$vracena_hodnota = file_get_contents("https://www.sklonovani-jmen.cz/api?klic=$klic_api&pad=$pad&jmeno=$jmeno_url");

echo htmlspecialchars($vracena_hodnota);

Ošetření chyb

Může se stát, že server z nějakého důvodu odmítne jméno ohnout. V takovém případě na stránce místo textu vypíše číslici. Musíme tedy otestovat, zda k tomu nedošlo:

<?php

$pad = "50"; // Na zkoušku úmyslně použijeme nesmyslnou hodnotu. Protože padesátý pád vytvořit nelze, server vrátí číslo chyby

$klic_api = "klic";

$jmeno = "Adelaida";

$jmeno_url = urlencode($jmeno);

$vracena_hodnota = file_get_contents("https://www.sklonovani-jmen.cz/api?klic=$klic_api&pad=$pad&jmeno=$jmeno_url");

if(is_numeric($vracena_hodnota)){

//Systém sklonovani-jmen.cz vrátil číslo chyby, použijeme nějaké univerzální oslovení

echo "Vážený uživateli";

}else{

//Systém sklonovani-jmen.cz nevrátil číslo chyby, jméno ohnul, můžeme ho vypsat

echo htmlspecialchars($vracena_hodnota);

}

Nyní se stačí zaregistrovat na sklonovani-jmen.cz a získat vlastní klíč, ten zadat do proměnné $klic_api a máme funkční základ, který můžeme dále vylepšovat.
Hlavně nezapomeňte změnit hodnotu proměnné $pad. Vypisovalo by to stále to univerzální oslovení.
A do proměnné $jmeno dáme hodnoty, které získáme například z registračního formuláře nebo z databáze.