IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Generátor básní v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
carpi
Nevyplnené
Avatar
carpi:14.5.2013 19:26

V první řadě bych odsadil bloky, takhle se to neda cist

 
Odpovedať
14.5.2013 19:26
Avatar
David Hynek
Tvůrce
Avatar
Odpovedá na
David Hynek:14.5.2013 21:13

v počítači to tak mám, tady to odstranilo tabulátory

Odpovedať
14.5.2013 21:13
Čím víc vím, tím víc věcí nevím.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na David Hynek
David Hartinger:14.5.2013 21:17

Ty se musely odstranit nedopatřením když jsi vkládal text, editor taby podporuje.

Odpovedať
14.5.2013 21:17
New kid back on the block with a R.I.P
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:14.5.2013 21:18

v pohodě... už jsem je tam přidal

Odpovedať
14.5.2013 21:18
Čím víc vím, tím víc věcí nevím.
Avatar
Neaktivní uživatel:26.5.2017 11:54

Nefungují háčky a čárky, mění se na otazníky.

Odpovedať
26.5.2017 11:54
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Neaktivní uživatel
David Hartinger:26.5.2017 12:09

Ale to přeci není tím skriptem :) Musíš ho vložit do HTML stránky, kde je nastavené UTF-8 kódování, to jsou úplné základy, viz zdejší kurzy.

Odpovedať
26.5.2017 12:09
New kid back on the block with a R.I.P
Avatar
Neaktivní uživatel:26.5.2017 15:29

No to mě napadlo... :-D
Ale přišlo mi to divné u hotového scriptu...

Odpovedať
26.5.2017 15:29
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovedá na Neaktivní uživatel
mkub:26.5.2017 18:19

ten problem mas v kodovani toho suboru...
nastav si IDE, v ktorom to pises na utf-8, nasledne si nastav aj ten script na utf-8 a vyvaruj sa Windowsovemu notepadu - ten uklada iba vo Windows kodovani (napr. pre strednu Europu: cp-1250), co je uplne ine kodovanie, nez utf-8

 
Odpovedať
26.5.2017 18:19
Avatar
Odpovedá na mkub
Neaktivní uživatel:26.5.2017 19:18

Používám Notepad++

Odpovedať
26.5.2017 19:18
Neaktivní uživatelský účet
Avatar
David Hynek
Tvůrce
Avatar
Odpovedá na Neaktivní uživatel
David Hynek:27.5.2017 11:43

Uf, to je už let.

Michale, když budeš psát program třebas v Notepadu, tak musíš soubor ukládat v nějakém kódování. Používám UTF8, totéž doporučuji tobě. Tak jak ten program je, vygeneruje část HTML, ale jen tu, která by měla být vložená mezi tagy Body. Tedy hlavičku stránky v HTML musíš napsat sám a také tam dát kodování znakové sady. Tedy opět UTF8.

Stránka by pak vypadala asi takto. Musíš ji samozřejmě uložit jako soubor PHP:

<?php
session_start();
header('Content-type: text/html; charset=utf-8');

/*
Velmi jednoduchý generátor básniček. Rozšíření je možné podle vašich potřeb.
Je to můj první větší script v OOP, tak to prosím berte velmi s rezervou.
*/

class Basen
{

public $obsah = ""; // záznam obsahu básně

private $pocet_slok = 1; // počet slok básně

private $vety = array("prid rod pod slov","pod prid rod slov","pod rod slov","rod priv pod slov");  // styl vět

private $styl = array("112211","221133","121233","332211","1122","1313","2332","11221122");  // styl básně

private $slova = array(
        "rod1" => array("muž","syn","dědeček","starosta","alkoholik","policista","saniták","svářeč","programátor","řezník","hrubián","hlídač krav","veterán"),
        "rod2" => array("sestra","matka","dcera","jeptiška","dojička","zpěvačka","básnířka","malířka","kurva","řidička","lazebnice","krakatice","večernice","polednice"),
        "rod3" => array("dítě","prase","struhadlo","švihadlo","strašidlo","mýdlo","jídlo","víno","leštidlo","lepidlo","sedadlo","lehátko","ořezávátko","na koberce klepadlo"),
        "pod1" => array("kredenc","počítač","stůl","parní válec","soustruh","olejový hever","boiler","traktor","klakson","katamarán","hoboj","router"),
        "pod2" => array("postel","kabelku","žehličku","ředkvičku","lampičku","tlamičku","lahvičku","stoličku","překližku","vydličku","hoblovku","vrtačku"),
        "pod3" => array("pivo","auto","letadlo","pyžamo","zrdcadlo","lepidlo","hovado","lákadlo","hekadlo","tričko","počítadlo","švihadlo"),
        "prid1" => array("velký","barevný","pevný","silný","jasný","přesný","krásný","starý","unavený","naštvaný","kouzelný","prolhaný","proradný","záhadný"),
        "prid2" => array("tlustá","šílená","ožralá","krásná","štíhlá","vláčná","drahá","levná","mladá","pihovatá","proradná","osamělou","odohodlanou","vyplašená"),
        "prid3" => array("skvělé","drahé","malé","silné","výkonné","bouřlivé","strnulé","rozbité","přiskříplé","zapomenuté","vážné","odhodlané","unavené","uplacené"),
        "slov1" => array("rozladil","hladil","radil","rozbil","zastřelil","zabalil","zapálil","polil","rozdrobil","opravil","opálil","chytil","odpálil","opustil","obrátil"),
        "slov2" => array("rozbila","štípala","vábila","hrozila","žárlila","shodila","zkrátila","mlátila","vypnula","předělala","přeřezala","osolila","omlátila","nabarvila"),
        "slov3" => array("letělo","hledělo","stávalo","načalo","bolelo","křupalo","chápalo","tápalo","skákalo","přestalo","řvalo","žvatlalo","zuřilo","schovalo","klepalo"),
        "priv1" => array("své","vlastní","kamarádův","otcův","drahý"),
        "priv2" => array("svou","cizí","novou","papírovou","zlevněnou"),
        "priv3" => array("své","jiné","zahraniční","levné","rozbité"),
); // pole slov

// upraví větu, první písmeno bude velké
private function uprav_vetu($s, $e ='utf-8')
{
        if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($s)) {
                $s = mb_strtolower($s, $e);
                $u = mb_strtoupper($s, $e);
                preg_match('/(.)/us', $u, $m);
                $s = $m[1] . mb_substr($s, 1, mb_strlen($s, $e), $e);
        }
        else
        {
                $s = ucfirst($s);
        }
        return $s;
}

// vytvoří větu, vybere styl a doplní slova
private function vrat_vetu($x,$veta)
{
        $veta = preg_replace("/(prid)/i",($this->slova["prid$x"][array_rand($this->slova["prid$x"])]),$veta);
        $veta = preg_replace("/(rod)/i",($this->slova["rod$x"][array_rand($this->slova["rod$x"])]),$veta);
        $veta = preg_replace("/(pod)/i",($this->slova["pod$x"][array_rand($this->slova["pod$x"])]),$veta);
        $veta = preg_replace("/(slov)/i",($this->slova["slov$x"][array_rand($this->slova["slov$x"])]),$veta);
        $veta = preg_replace("/(priv)/i",($this->slova["priv$x"][array_rand($this->slova["priv$x"])]),$veta);
        return $this->uprav_vetu($veta).".";
}

// vytvoří tituloek básně
private function titulek()
{
        return "<h1>".($this->vrat_vetu(rand(1,3),"prid rod"))."</h1>\n\n";
}

// vytvoří obsah básně, vegeneruje věty a pošle je ke zpracování do vrat_vetu
private function vytvor_obsah()
{
        $obsah = "";
        for($b=0;$b<$this->pocet_slok;$b++)
        {
                $obsah .= "<p>";
                $x = rand(0,7);
                for($a=0;$a<(strlen($this->styl[$x]));$a++)
                {
                        $veta = $this->vety[array_rand($this->vety)];
                        $obsah .= $this->vrat_vetu($this->styl[$x][$a],$veta)."<br />\n";
                }
                $obsah .= "</p>\n";
        }
        return $obsah;
}

public function __construct($n)
{
        if($n < 1) $n = rand(2,5);
        $this->pocet_slok = $n;
}

public function __toString()
{
        $this->obsah .= $this->titulek();
        $this->obsah .= $this->vytvor_obsah();
        return $this->obsah;
}

}


// použití třídy Basen
// 0 = použije se náhodné číslo mezi 1 - 5, jinak se vrtátí tolik slok kolik budete potřebovat

?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Báseň</title>
  </head>
  <body>
<?php
   $basen = new Basen(5);
   echo $basen;
?>
  </body>
</html>

Nepočítej s nějakým zázrakem, který bys mohl recitovat nějaké holce, je to jen zkouška funkčnosti.

Ať se daří.

Odpovedať
27.5.2017 11:43
Čím víc vím, tím víc věcí nevím.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!