Zdravím vespolek,
mám jeden rychlodotaz: Potřebuju udělat, aby když postu text z TEXTAREA do databáze, tak aby bral na vědomí, že konec řádku v TEXTAREA je konec řádku ve skutečnosti. Dalo by se to udělat přes <pre> jednoduše, ale já prostě nepřekousnu to písmo, takže předpokládám, že to bude buď přes js nebo nevím.
Internet je plný návodů na to, jak vkládat takhle přes js smajlíky a tak, ale jak nahradit třeba konec řádku automaticky do výstupu tagem <br />, tak to už nikde, popř. neumím hledat :-) Díky
ehm, tak zřejmě jen neumím hledat :-)
že by (to jsem si teda skombinoval ze dvou zdroju, takže pokud to bude dobře, třeba to tady zase poslouží i někomu dalšímu, když už jsem se zeptal :-)
$textstary = $_POST['textarea'];
$text = str_replace("\n","<br>", $textstary);
a pak to teprve jako $text pošlu do databáze a je to? To by bylo podezřele jednoduché :-D
No nic, tak se omlouvám za spam, a můžete to uzavřít. Nechám tady výsledek pro příští generace :-)
Tohle je kód zpracování jen texarey z formuláře a nechal jsem si ji vypsat velkým cerveným písmem, abych viděl že to fachá:
<font style=" font-family: comic sans ms; font-size: 20px; color: #FF0000; font-weight: bold; ">
<?php
$textstary = $_POST['obsah'];
$text = str_replace("\n","<br />", $textstary);
echo "$text";
?>
</font>
Jenom dodám, že celé vlákno vzniklo z neznalosti funkce nl2br(). Viz http://cz.php.net/nl2br.
Výsledek tedy může vypadat takto (pominu-li bezpečnostní detaily):
<?php echo nl2br($_POST['obsah']); ?>
skutečně z neznalosti. Je mezi těmito zápisy nějáký i další rozdíl, než jen v jednoduchosti zápisu?
Tak rozdíl mezi nimi je, že nl2br() má zřejmě ošetřen konec řádku. Respektive jde na to jinak. Před koncem řádku vloží tág <br />.
Takže:
echo nl2br(" prvni \n druhy "); // => prvni <br />\n druhy
echo nl2br(" prvni \r druhy "); // => prvni <br />\r druhy
echo nl2br(" prvni \r\n druhy "); // => prvni <br />\r\n druhy
<HTML>nl2br má jednu nevýhodu - nezná normu, podle které je výsledný dokument utvářen. Takže pokud má být výstup v klasickém HTML (odřádkování <br>), PHP tam funkcí nl2br stejně narve XML zápis (odřádkování <br />).</HTML>
Vývojáři si toho ale byli vědomi a v novějších verzích php (5.3.0) už má optional parametr: nl2br("prvni\ndruhy", false); //prvni<br>druhy
___
Jiro: předpokládám, že o bezpečnosti víš, ale nedá mi to nezopakovat.. nezapomeň, že čistě načtený vstup od uživatele bys neměl jenom tak vypsat -- uživatel ti tam může naházet různé html tagy, případně javascripty a takový výpis může udělat pěkné divadélko. Stejně tak bys jej neměl jenom tak jednoduše vkládat do databáze -- je potřeba použít mysql_real_escape_string() nebo alespoň addslashes() ;)
<HTML>Díky za tip, to jsem nevěděl.
___
Jiro: Na addslashes zapomeň. Jedinou správnou funkcí pro zabezpečení řetězce za účelem jeho použití v MySQL dotazu je mysql_real_escape_string.</HTML>