Menu

Łańcuchy w PHP: cudzysłowy, łączenie i interpolacja

Łańcuchy w PHP łączysz operatorem kropki ("Hello, " . $name) albo wstawiasz zmienne prosto w podwójne cudzysłowy ("Hello, $name"). Pojedyncze cudzysłowy wypisują tekst tak, jak jest zapisany. Poznaj łączenie, .=, interpolację tablic i obiektów oraz zmianę wielkości liter przez strtoupper, strtolower, ucfirst i ucwords.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Łańcuch w PHP to tekst w pojedynczych lub podwójnych cudzysłowach. Łańcuchy łączysz operatorem kropki, $first . ' ' . $last, albo wstawiasz zmienną prosto w podwójne cudzysłowy: "Hello, $name".

Kropka łączy dowolne dwie wartości w nowy łańcuch. Liczby są konwertowane automatycznie, więc "Total: " . 42 daje "Total: 42".

Pojedyncze vs podwójne cudzysłowy

Podwójne cudzysłowy robią dwie dodatkowe rzeczy: zastępują zmienne ich wartościami i zamieniają sekwencje ucieczki, takie jak \n (nowa linia) i \t (tabulator), na odpowiadające im znaki. Pojedyncze cudzysłowy wypisują tekst dokładnie tak, jak jest zapisany, z wyjątkiem \' i \\.

Używaj pojedynczych cudzysłowów do stałego tekstu, a podwójnych, gdy w środku ma być zmienna albo \n. Różnica w szybkości jest zbyt mała, by ją zmierzyć, więc wybierz to, co sprawia, że linia jest czytelniejsza.

Łączenie łańcuchów przez . i .=

.= dopisuje na koniec zmiennej łańcuchowej. To typowy sposób budowania tekstu w pętli, na przykład fragmentu HTML. Uruchom ten blok, a edytor otworzy kartę Page z wyrenderowaną listą.

Kolejność działań ma znaczenie, gdy mieszasz . z arytmetyką. Od PHP 8 + i - wiążą silniej niż ., więc "Sum: " . 2 + 3 daje "Sum: 5". Nawiasy sprawiają, że następny czytelnik nie ma wątpliwości: "Sum: " . (2 + 3).

Zmienne, tablice i obiekty wewnątrz łańcucha

Zwykła zmienna działa w podwójnych cudzysłowach sama. Dla elementu tablicy, łańcucha właściwości obiektu albo wywołania metody obejmij wyrażenie nawiasami klamrowymi. Nawiasy oddzielają też zmienną od liter, które następują zaraz po niej.

Metody działają w nawiasach, zwykłe funkcje nie: ostatnia linia wypisuje nawiasy i nazwę funkcji wokół wartości $fruit. Wywołaj funkcję przed łańcuchem albo użyj sprintf, gdy łańcuch ma wiele wartości.

Zmiana wielkości liter: strtoupper, strtolower, ucfirst, ucwords

Te funkcje działają bajt po bajcie i zmieniają tylko litery od a do z. Dla tekstu z akcentami, cyrylicą albo greką użyj wersji wielobajtowych, które rozumieją UTF-8:

Odczyt pojedynczych znaków i powtarzanie łańcuchów

Łańcuch można indeksować jak tablicę. Ujemne przesunięcia liczą się od końca. Liczenie znaków opisuje strona o strlen.

Częsty błąd: + zamiast .

W JavaScripcie + łączy łańcuchy. W PHP + to zawsze arytmetyka: łańcuchy liczbowe są dodawane jak liczby, a tekst, który nie jest liczbą, rzuca błąd.

Jeśli widzisz liczbę tam, gdzie spodziewałeś się połączonego tekstu, albo Unsupported operand types: string + string, poszukaj +, który powinien być ..

Najczęściej zadawane pytania

Jak połączyć łańcuchy w PHP?

Użyj operatora kropki: $full = $first . ' ' . $last;. Aby dopisać do istniejącego łańcucha, użyj .=: $html .= '<li>Item</li>';. Operator + służy do liczb, a "Hello" + "World" w PHP 8 rzuca TypeError.

Czym różnią się pojedyncze i podwójne cudzysłowy w PHP?

Podwójne cudzysłowy podstawiają zmienne i sekwencje ucieczki: "Hi $name\n" wypisuje wartość $name i znak nowej linii. Pojedyncze wypisują prawie wszystko tak, jak jest zapisane: 'Hi $name\n' wypisuje znak dolara, nazwę i ukośnik wsteczny z literą n. W pojedynczych cudzysłowach sekwencjami ucieczki są tylko \' i \\.

Jak wstawić wartość z tablicy do łańcucha w PHP?

Obejmij ją nawiasami klamrowymi: "Hello, {$user['name']}". To samo działa dla właściwości obiektów i wywołań metod: "{$user->getName()}". Bez nawiasów "$user[name]" (bez cudzysłowów wokół klucza) też działa dla prostego klucza.

Jak zamienić łańcuch na wielkie lub małe litery w PHP?

strtoupper('php') zwraca PHP, strtolower('PHP') zwraca php, ucfirst('hello') zmienia pierwszą literę na wielką, a ucwords('hello world') pierwszą literę każdego słowa. Dla tekstu z polskimi znakami lub literami spoza alfabetu łacińskiego użyj mb_strtoupper() i mb_strtolower().

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ