Mamy pole:
I wpisujemy do niego przykładową treść (wpisujemy dokładnie tak, jak to przedstawia kod poniżej):
Kod
Tekst w pierwszej linii
Tekst w drugiej linii
Tekst w trzeciej linii
Po przesłaniu formularza tekst możemy pobrać ze zmiennej $_POST['content'] i przypisać do zmiennej $tekst:
$tekst = $_POST['content'];
Zawartość zmiennej $tekst będzie następująca:
Tekst w pierwszej linii\nTekst w drugiej linii\nTekst w trzeciej liniiprzy czym '
\n' to niewidoczny dla nas znak przejścia do nowej linii. Przeglądarka nie potrafi zinterpretować '
\n' jako przejścia do nowej linii, dlatego jeśli chcemy wyświetlić wiadomość tak, jak została wpisana, musimy zamienić znaki przejścia do nowej linii na odpowiedni kod html. Zadanie to spełnia funkcja nl2br, która automatycznie zamienia wszystkie '
\n' na '
<br />' (odpowiednikiem tej funkcji jest str_replace("\n", '<br />', 'tekst')). Zatem zastosujmy funkcję:
$wersja_html = nl2br($tekst);
Teraz zmienna $wersja_html zawiera ciąg znaków:
Tekst w pierwszej linii<br />Tekst w drugiej linii<br />Tekst w trzeciej liniiktóry przez przeglądarkę jest wyświetlany tak, jak w kodzie z drugiego listingu. Jeśli chcemy się całkowicie pozbyć znaków przejścia do nowej linii możemy zastąpić je np. spacjami:
Zawartość zmiennej $nowy_tekst będzie następująca:
Tekst w linii pierwszej Tekst w linii drugiej Tekst w linii trzeciejJednak w tej chwili nie możemy już wyświetlić (
w ogóle) tekstu tak, jak był wpisywany.
I przykład:
<?php
if(!empty($_POST['content']) ) { $tekst = $_POST['content'];
$wersja_html = nl2br($tekst); echo 'tekst zawierający znaki przejścia do nowej linii \'\n\', przeglądarka ich nie interpretuje<br />'; echo '<br /><br />tekst zawierający kod html przejścia do nowej linii \'<br />\', przeglądarka je interpretuje<br />'; echo '<br /><br />tekst, który zawiera znaki spacji zamiast znaków przejścia do nowej linii, nie możemy go wyświetlić tak, jak był wpisany:<br />'; }
?>
<form action="" method="post">
<textarea name="content">
<?php echo isset($tekst) ?
$tekst : ''; ?></textarea><br />
<input type="submit" name="action" value="send" />
</form>