Diskuze: PHP uložení textu tak aby se pri ukladani ulozila hodnota promenne
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Vytáhni si ten text z $menu.txt do nějaké proměně a pak ji tam jen do
toho textu přidej...
Problém je v tom ze ty ulozis do HTML souboru kód který by se měl vykonat na
serveru, ale asi jak jistě víš tak bez speciálního nastavení se na serveru
"spustí" jen soubory s koncovkou PHP (+ par dalších)
asi sem nebyl plně pochopen. Mám na řádku 26 tento kod
fwrite($soubor,'
za tímto kodem se vse az na posledni 3 radky uklada do $menu.php. Problem je ten ze na 13 radku od spoda mam tento kod
<?php include ("./$menu.txt"); ?>
a ja by jsem chtel aby se mi ten kod neulozil v podobe v jake ho tam mam napsany ale misto $menu se mi ulozila hodnota dane promene.
Uz chapu jak to myslis a toto reseni mi nevyhovuje proto protoze tento PHP script se bude pouzivat opakovane vzdy s jinou hodnotou promene menu, takze se tam napevno nazev textoveho dokumentu nelze vlozit.
tak tu proměnou v místě kde potřebuješ prostě vypiš, tedy:
echo file_get_contents("./odkazy.txt");
nebo
echo file_get_contents("./{$menu}.txt");
Po vygenerovani stranky mam v ni zase
$soubor = fopen("./$menu.php", "a+");
Kdyz to zjednodusim tak potrebuji
<?php echo file_get_contents("./{$menu}.txt"); ?>
fwrite($soubor,' nejaky text $menu (tuto promenou $menu chci ulozit jako hodnotu promenne a ne jako promenou) text text text ');
Tak na to asi mé mozkové buňky nestačí... ale jestli soubor uložíš jako TXT, tak se nediv, že se v takovém souboru kod v PHP nechová jako kod v PHP, ale jako prostý text...
Nevim jak je to myšleno ale po vykonání prvního PHP scripu se mi proměná nikam neukládá, takže úplně nechápu jak ji tam mám vypsat aby ve vygenerovaném souboru nebyla proměná ale pouze její hodnota. Asi jsem navrdlej ale nic mě prostě nenapadá až na řešení uložit hodnotu proměné do databáze ale této variantě se chci vyvarovat.
Nezkoušel jsem.
Vzhledem k tomu, že vkládání textu za pomocí proměnné je celkem běžná
věc, tak by tohle mohlo fungovat.
<?php echo file_get_contents("./{$menu}.txt"); ?>
fwrite($soubor," nejaky text".$menu."(tuto promenou $menu chci ulozit jako hodnotu promenne a ne jako promenou) text text text");
Jinak řečeno vyhodíš proměnnou z části textu a vypíšeš ji zvlášť a opět to spojíš.
fwrite($soubor,"něco".$promena."pokračujeme ve větě");
funguje narozdíl od 'text text ' použil jsem to o pár kroků předtim a nějak mi vůbec nedošlo že ' a " nejsou stejné značky, jediné co mě štve že všude kde mám v textu " to budu muset ošetřit, takže docela dobrá pakárna ale co už . Kdyby jste někdo věděl jak vložit proměnou mezi ' ' tak dejte vědět. Docela by mě zajímalo.
Obávám se, že bohužel nijak. V tom je právě jeden z rozdílů jednoduchých a dvojitých uvozovek. Pravděpodobně můj uvedený příklad by měl fungovat i s jednoduchými uvozovkami.
nefunguje, při spuštění scriptu je klasický eror za špatnou syntaxi.
Tak to zkus takto a pak se koukni, zda je v souboru co potřebuješ
<?php
$nazev = "test-stranka";
$menu = <<<EOT
<ul id="polozky">
<li><a href="/neco.html">Něco</a></li>
<li><a href="/nekam.html">Někam</a></li>
<li><a href="/nekdo.html">Někdo</a></li>
</ul>
EOT;
$obsah = <<<EOT
<h1 class="nadpis">Nadpis</h1>
<p>Lorem ipsum dolor sit amet consectetuer eu non turpis netus Mauris. Nam semper magna semper Morbi enim Pellentesque hendrerit id nec Quisque. Lorem Praesent ipsum tempor Quisque vitae at volutpat pretium hendrerit elit. Amet tincidunt Vestibulum dui.
</p>
EOT;
$stranka = <<<EOT
<!doctype html>
<html lang="cz">
<head>
<meta charset="utf-8">
<title>The HTML5 Herald</title>
<meta name="description" content="stranka">
<meta name="author" content="autor">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
{$menu}
</div>
<div id="obsah">
{$obsah}
</div>
</body>
</html>
EOT;
echo "Soubor $nazev.txt ";
if(!file_put_contents("{$nazev}.txt", $stranka)) { echo "ne";}
echo "vytvořen";
?>
Zobrazeno 13 zpráv z 13.