W PHP próbuję utworzyć znak nowej linii:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Następnie otwieram utworzony plik w Notatniku i zapisuje on nowy wiersz dosłownie:
1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n
Próbowałem wielu odmian \r\n
, ale żadna nie działa. Dlaczego nowa linia nie zmienia się w nową linię?
php
string-interpolation
davidjhp
źródło
źródło
Odpowiedzi:
Tylko ciągi podwójnie cytowane interpretują sekwencje specjalne
\r
i odpowiednio\n
jako „0x0D” i „0x0A”, więc chcesz:Z drugiej strony ciągi cytowane znają tylko sekwencje specjalne
\\
i\'
.Więc jeśli nie połączysz łańcucha pojedynczego cudzysłowu z podziałem wiersza wygenerowanym w innym miejscu (np. Używając łańcucha podwójnego cudzysłowu
"\r\n"
lubchr
funkcjichr(0x0D).chr(0x0A)
), jedynym innym sposobem uzyskania podziału wiersza w ciągu pojedynczego cudzysłowu jest dosłowne wpisanie go za pomocą edytora:Pamiętaj, aby sprawdzić edytor pod kątem ustawień podziału wiersza, jeśli potrzebujesz określonej sekwencji znaków (
\r\n
na przykład).źródło
PHP_EOL
zamiastUżyj predefiniowanej
PHP_EOL
stałej:Stała wartość zostanie ustawiona zgodnie z zakończeniami linii systemu operacyjnego, w którym działa PHP. W Linuksie tak będzie
"\n"
; na Windowsie będzie"\r\n"
.źródło
Polecenie „echo” w PHP wysyła dane wyjściowe do przeglądarki jako nieprzetworzony kod HTML, więc nawet jeśli w podwójnych cudzysłowach przeglądarka nie przeanalizuje go w dwóch wierszach, ponieważ znak nowej linii w HTML nic nie znaczy. Dlatego musisz albo użyć:
podczas używania „echa” lub zamiast tego użyj fwrite ...
Spowoduje to wyświetlenie nowej linii HTML zamiast „\ n”.
źródło
Użyj stałej PHP_EOL, aby uzyskać odpowiedni znak bez względu na platformę.
http://us3.php.net/manual/en/reserved.constants.php
Prosty przykład użycia:
źródło
Ciągi między podwójnymi cudzysłowami
""
interpolują, co oznacza, że przekształcają one znaki specjalne na znaki drukowalne.Ciągi między pojedynczymi cudzysłowami
''
są dosłowne, co oznacza, że są traktowane dokładnie tak, jak znaki są wpisywane.Możesz mieć oba na tej samej linii:
wyjścia:
źródło
echo "$clientid $lastname\r\n"
Powinieneś użyć tego:
Możesz także zajrzeć na PHP EOL .
źródło
W rzeczywistości
\r\n
dotyczy strony html danych wyjściowych. Za pomocą tych znaków możesz po prostu utworzyć nowy wiersz w kodzie HTML, aby był bardziej czytelny:wyświetli:
że przeglądanie strony będzie:
Jeśli naprawdę miałeś to na myśli, musisz po prostu naprawić pojedynczy cytat „”:
W przeciwnym razie, jeśli chcesz podzielić tekst, w naszym przykładzie „Pierwszy wiersz” i „Drugi wiersz” musisz użyć kodu HTML
<br />
:które wygenerują:
Byłoby również bardziej czytelne, jeśli zastąpisz cały skrypt:
źródło
First line Second line
- dowolne białe znaki, w tym znaki nowej linii, zostaną skompresowane do jednego znaku spacji w renderowanym wyniku. Poza tym nie</br>
jest to poprawny HTML.w3school zaoferował w ten sposób:
korzystając z tej funkcji możesz to zrobić. Próbowałem innych sposobów, o których mowa powyżej, ale nie pomogą mi ..
źródło
nl2br()
funkcja konwertuje znaki nowego wiersza na<br />
znacznik HTML. Może to być przydatne do tworzenia nowego wiersza na stronach przeglądarki, ale nie nowego wiersza w plikach tekstowych, JavaScript lub drukowania na ekranie lub konsoli.Z jakiegoś powodu każdy post z pytaniem o znaki nowej linii w PHP nie wspomina o przypadku, w którym po prostu wstawienie nowego wiersza do ciągów pojedynczych cudzysłowów zrobi dokładnie to, co myślisz:
ex 1.
Przykład 1 wyraźnie nie drukuje pożądanego wyniku, chociaż prawdą jest, że nie można uciec od nowego wiersza w cudzysłowach, możesz mieć jeden:
ex 2.
Przykład 2 ma dokładnie pożądane zachowanie. Niestety wstawiana nowa linia zależy od systemu operacyjnego. Zwykle nie stanowi to problemu, ponieważ przeglądarki / serwery internetowe poprawnie interpretują nowy wiersz, niezależnie od tego, czy jest to \ r, \ r \ n, czy \ n.
Oczywiście to rozwiązanie nie jest idealne, jeśli planujesz rozpowszechniać plik za pomocą innych środków niż przeglądarka internetowa i wiele systemów operacyjnych. W takim przypadku powinieneś zobaczyć jedną z pozostałych odpowiedzi.
Uwaga: korzystając z bogatego w funkcje edytora tekstu powinieneś być w stanie wstawić nowy wiersz jako znak binarny, który reprezentuje nowy wiersz w innym systemie operacyjnym niż ten, który edytuje plik. Jeśli wszystko inne zawiedzie, wystarczy użyć edytora szesnastkowego, aby wstawić binarny znak ascii.
źródło
Użyj PHP nl2br, aby uzyskać znaki nowego wiersza w ciągu tekstowym.
źródło
nl2br
Konwertuje znaki nowej linii do<br />
tagu HTML. Jeśli ciąg nie zawiera znaku nowej linii, ta funkcja nic nie zrobi! Co więcej, pytanie nie dotyczy przerywania linii w akapicie w HTML. Chodzi o znak nowej linii !Próbowałem również tę kombinację zarówno w pojedynczych i podwójnych cudzysłowach. Ale żaden nie zadziałał. Zamiast używać
\n
lepszego wykorzystania<br/>
w podwójnych cudzysłowach. Lubię to..źródło
Użyj chr (13) do powrotu karetki i chr (10) dla nowej linii
źródło
W przypadku instrukcji echa zawsze używam
<br>
podwójnych cudzysłowów.źródło
Nic mi nie działało.
PHP_EOL
. "\r\n";
Pracuje dla mnie:
źródło
źródło