Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Łamanie linii nie działa :/
Forum PHP.pl > Forum > Przedszkole
StadiPL
Witam
Mam dość podstawowy problem. Zaczynam uczyć się PHP i kiedy chcę załamać linię to się nie da :/ Dodam że szukałem na internecie i nic co znalazłem nie pomogło.
Próbuję \n oraz \n\r i nic mi nie działa
Może ktoś podać prosty poprawny przykład przykład?
Dodatkowo chciałem zrobić funkcję echo wyświetlającą tekst za nim wynik zawołania PHP_OS i łamanie lini
Oto niektóre próbowane przezemnie warianty (wszystkie nie działają):
  1. <?php
  2. echo("1"); \n
  3. echo("2");
  4. ?>

  1. <?php
  2. echo("1") \n ;
  3. echo("2");
  4. ?>

To powoduje że pomiędzy 1 i 2 pojawia się spacja (ale nie enter):
  1. <?php
  2. echo("1\n");
  3. echo("2");
  4. ?>

Coś takiego mi działa:
  1. <?php
  2. echo("1<br>");
  3. echo("2");
  4. ?>

Ale jest to znacznik z HTML'a więc nie o to chodzi..
No i czegoś chyba nie rozumiem, bo mi nie działa takie coś:
  1. <?php
  2. echo ("Wersja PHP to ")$PHP_OS;
  3. echo("2");
  4. ?>

Lub tak:
[php]
<?php
echo ("Wersja PHP to "$PHP_OS);
echo("2");
?>
/php]
Co źle robię i jak powinno to wyglądać? Oczywiście chcę aby "2" było w nowej linijce.
Z góry dzięki za wszelką pomoc ;]
Arcioch
Witam smile.gif

Spróbuj użyć PHP_EOL smile.gif
StadiPL
Coś nie za bradzo chce działać :/
Zauważyłem że umiem osiągnąć pożądany efekt (wygląda tak jak chcę), jednak nie jest napisany tak jakbym chciał, bo wykorzystuje HTML. Ja chcę mieć to w PHP, a przedewszystkim zrozumieć ;d
  1. <?php
  2. echo ("Wersja PHP to ");
  3. echo PHP_OS;
  4. echo("<br>2");
  5. ?>
Mackos
StadiPL sprawa jest bardzo prosta.
Znaki specjalne \n itp. działają tylko przy specjalnych warunkach np. jeśli masz plik tekstowy i do niego zapisujesz string - wtedy \n zadziała jako znak nowej linii.
Natomiast przeglądarka, domyślnie prezentuje wszystko w html'u, pod warunkiem że nie ma powodów (nagłówków), które wskazywałyby że ma to być wyświetlane inaczej.
W związku z czym jeśli chcesz na danej stronie pokazać czysty tekst musisz najpierw wysłać odpowiedni nagłówek:
  1. <?php
  2. header("Content-type: text/plain");
  3. echo "Abcde \n fghijk";
  4. ?>
StadiPL
Owszem na Twoim przykładzie śmiga, ale na tym już nie sad.gif
  1. <?php
  2. header("Content-type: text/plain");
  3. echo "Wersja twojego systemu to:";
  4. echo PHP_OS; \n
  5. echo "druga"
  6. ?>

Chyba gra nie jest warta świeczki..
Za to tak przy okazji się chętnie dowiem jak prawidłowo wykonać coś takiego:
  1. <?php
  2. echo "Wersja twojego systemu to:" PHP_OS;
  3. ?>

Myślę że się domyślisz o co mi chodzi ;] Muszę każdą jedną rzecz zawsze podawać że tak to określę "od nowa" czy mogę jakimś sposobem pisać "ciągiem"?
Wazniak96
Możesz połączyć stringi lub dołączyć coś do stringu za pomocą operatera ---> . (kropka)
  1. <?php
  2. echo('Wersja twojego systemu: '.PHP_OS);


Łamanie lini nie działa ci poniewarz nie wyświetlasz go, aby zadziałał musisz wyświetlić go echem jako string pomiędzy cudzysłowiem.
  1. <?php
  2. echo("Tak wyglada \n poprawne złamanie lini");
Sobak
Spróbuję Ci to wyjaśnić po kolei. Do łączenia ciągów znaków używamy kropki.

  1. echo 'jeden ';
  2. echo $zmienna;
  3. echo ' system ';
  4. echo PHP_OS;
  5.  
  6. // versus
  7. echo 'jeden '.$zmienna.' system '.PHP_OS;


Ten sposób łączenia (konkatenacji) działa zawsze, możesz w ten sposób połączony string zapisać do zmiennej, podać jako argument funkcji i tak dalej.

Jest jednak jeszcze jeden myczek. echo jest wbudowaną konstrukcją języka dlatego różni się lekko od zwykłej funkcji (można to poznać np. po tym, że możesz pominąć nawiasy, jak w moim przykładzie; dla funkcji to nie zadziała). Jak sobie obczaisz echo w manualu, to zobaczysz, że jest druga opcja.

  1. echo 'jeden ', $zmienna, ' system ', PHP_OS;

Tak jakbyś podawał kolejne argumenty do funkcji, oddzielasz klasycznie przecinkiem. Jako ciekawostkę można podać, że o ile dobrze kojarzę, to taka opcja jest minimalnie szybsza od łączenia kropką - ja jednak używam tego drugiego sposobu, bo jest uniwersalny.


To teraz drugi temat. To co robisz źle. Spójrz na przykład podany przez Mackosa. \n musi być wysłane do przeglądarki tak jak tekst. Co oznacza dokładnie tyle, że musi być umieszczony w czymś co wyświetla tekst (echo przykładowo). Zauważ też, że o ile zwykły tekst możesz wrzucać w cudzysłowy bądź też apostrofy, to jeśli chcesz wrzucić tam \n to musisz umieścić go w cudzysłowach. Myślę, że powyższy przykład dobrze Ci to zilustruje.
StadiPL
@sobak Bardzo dziękuję miszczu ;p
Zapodam jeszcze przykładowe użycie, jakie wydaje mi się być bardzo kuszącym rozwiązaniem ;]
  1. Można tak:<br>
  2. <?php
  3. $br="<br>";
  4. echo 'jeden '.$br.' system '.PHP_OS;
  5. ?>
  6. <br><br>Lub tak:<br>
  7. <?php
  8. define("br", "<br>");
  9. echo 'jeden '.br.' system '.PHP_OS;
  10. ?>

Jeszcze takie pytanko, lepiej stosować <br> czy <br /> ? ;]
sowiq
Cytat(StadiPL @ 10.05.2013, 15:43:03 ) *
Jeszcze takie pytanko, lepiej stosować <br> czy <br /> ? ;]

A widzisz jakąkolwiek różnicę w działaniu? Jeśli nie, to na tym etapie nauki żadna wersja nie jest dla Ciebie lepsza.

Podpowiem Ci tylko że ma to związek ze standardami HTML. <br /> stosuje się w standardzie XHTML, ponieważ jest on na tyle restrykcyjny, że wszystkie tagi muszą być pozamykane. <br> nie ma tagu zamykającego </br> jak np. w przypadku <span></span>, więc używa się "skrótu" <br />.
Natomiast w HTML 4.01 oraz w HTML 5 można bez problemów stosować wersję taką: <br>.

Jak rozpoznać która wersja jest używana / zadeklarować której wersji chcesz używać? Poczytaj o !DOCTYPE.
StadiPL
Właśnie o tą różnicę mi chodziło ;] Wolę aby projekt od początku był zgodny z różnymi standardami ;d To wszystko co na razie chciałem wiedzieć. Pozdro wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.