Łańcuchy znaków -- poznaj szczegółowo typ PHP string

Typ PHP string — łańcuchy znaków

Podstawowe właściwości typu PHP string opisałem w rozdziale Typy danych i zmienne w PHP, ale obiecałem w nim też, że w jednym z dalszych rozdziałów potraktuję ten temat szerzej. To jest właśnie ten zapowiadany rozdział — poznasz w nim typ PHP string bardziej szczegółowo i nauczysz się pracować z łańcuchami w PHP na różne sposoby.

Łańcuchy znaków (reprezentowane przez typ PHP string) w języku PHP można definiować na cztery sposoby:

  • W podwójnym cudzysłowie prostym, np.: "Ja, sułtan, syn Mehmeda, brat Słońca i Księżyca…"
  • W pojedynczym cudzysłowie prostym (między apostrofami): 'Ty, sułtanie, diable turecki, przeklętego diabła bracie…'
  • W formacie PHP heredoc, np.:
    
    <<<MOJHEREDOC
      …wnuk i namiestnik Boga, Pan królestw Macedonii,
      Babilonu, Jerozolimy, Wielkiego i Małego Egiptu,
      Król nad Królami, Pan nad Panami…
    MOJHEREDOC;
  • W formacie PHP nowdoc, np.:
    
    <<<'MOJNOWDOC'
      …Kucharzu ty babiloński, kołodzieju macedoński,
      piwowarze jerozolimski, garbarzu aleksandryjski,
      świński pastuchu Wielkiego i Małego Egiptu,
      świnio armeńska, podolski złodziejaszku…
    MOJNOWDOC;

Dwa pierwsze sposoby na pewno już znasz, natomiast dwa ostatnie mogą być dla Ciebie nowością. Przyjrzymy się im wszystkim dokładnie, aby wybór odpowiedniego typu literału łańcuchowego w PHP nigdy nie sprawiał Ci problemu. Potem z kolei przejdziemy do odrobinę bardziej technicznego tematu, związanego z wewnętrzną budową typu PHP string.

Zaczniemy jednak od rozszerzenia wiadomości na znany nam już temat, czyli na temat literałów łańcuchowych PHP w prostym cudzysłowie pojedynczym i podwójnym.

typ php string - obraz Kozacy piszą list do sułtana
Obraz pt. „Kozacy piszą list do sułtana” pędzla Ilji Riepina — z tego listu pochodzą cytaty używane w przykładach na tej stronie

Cudzysłów pojedynczy czy podwójny w PHP

Podstawową różnicą między literałami łańcuchowymi w pojedynczym i podwójnym cudzysłowie w PHP jest sposób traktowania zmiennych i znaków specjalnych.

W cudzysłowie podwójnym zmienne i znaki specjalne są rozpoznawane przez PHP i odpowiednio traktowane, czyli zastępowane wartościami, które reprezentują. Natomiast w cudzysłowie pojedynczym wszystko jest traktowane jako zwykły tekst i nie jest w żaden specjalny sposób interpretowane, np.:


$wiek = 19;

echo "Moja córka ma $wiek lat.\n";
echo 'Moja córka ma $wiek lat.\n';
echo 'To jeszcze młoda dziewczyna.';

Wynik wykonania tych instrukcji będzie następujący:

Wynik:

Moja córka ma 19 lat.
Moja córka ma $wiek lat.\nTo jeszcze młoda dziewczyna.

Jak widać, w pierwszym łańcuchu została wykonana interpolacja zmiennej PHP, czyli nastąpiła zamiana zmiennej na wartość, którą reprezentuje, oraz znak specjalny \n został prawidłowo zinterpretowany jako znak nowego wiersza. Dlatego w wyniku mamy dwa wiersze tekstu.

W drugim łańcuchu, ani zmienna, ani znak specjalny, nie zostały zinterpretowane przez PHP, tylko zostały wydrukowane jako zwykły tekst.

Na podstawie tych informacji można sformułować prostą i praktyczną zasadę wyboru rodzaju cudzysłowu dla literału łańcuchowego w PHP: jeśli w łańcuchu chcesz umieścić wartość zmiennej albo znak specjalny, użyj prostego cudzysłowu podwójnego. We pozostałych przypadkach używaj cudzysłowu pojedynczego.

A czy można definiować literały łańcuchowe bez zmiennych i bez znaków specjalnych w cudzysłowie podwójnym? Tak, oczywiście. Nie jest to żaden błąd i w wielu przypadkach wybór rodzaju cudzysłowu nie ma praktycznego znaczenia.

Mimo tego, dobrze jest pamiętać, że w cudzysłowach pojedynczych PHP pomija mechanizmy interpretacji zmiennych i znaków specjalnych, co daje im nieznaczną przewagę wydajnościową, z której możemy skorzystać, gdy nasze łańcuchy nie zawierają niczego, co wymaga specjalnego traktowania.

Znaki specjalne w łańcuchach

Jak już wiesz, w tekście w podwójnym cudzysłowie PHP interpretuje zmienne i znaki specjalne zgodnie z ich prawdziwym przeznaczeniem, a nie dosłownie. Oprócz symbolu specjalnego \n PHP obsługuje jeszcze szereg innych symboli specjalnych, których wykaz znajduje się w poniższej tabeli.

Symbole specjalne rozpoznawane przez PHP w cudzysłowie podwójnym prostym
Symbol specjalny Znak
\" Podwójny cudzysłów prosty
\n Nowy wiersz
\r Powrót karetki
\t Tabulator
\\ Ukośnik wsteczny
\$ Znak dolara
\{ Lewy nawias klamrowy
\} Prawy nawias klamrowy
\[ Lewy nawias kwadratowy
\] Prawy nawias kwadratowy
\0\777 Znak ASCII o wartości ósemkowej z przedziału od 0 do 777
\x0\xFF Znak ASCII o wartości szesnastkowej z przedziału od 0 do FF

Znaki specjalne nie muszą być oddzielone od zwykłego tekstu, aby zostały prawidłowo rozpoznane. Kiedy PHP napotka w tekście znak \, to sprawdza, co znajduje się za nim. Jeśli jest to jeden ze znaków, który w połączeniu z ukośnikiem wstecznym stanowi sekwencję specjalną, to PHP interpretuje całość w odpowiedni sposób, np.:


echo "Nie będziesz\tty nawet ";

Tu PHP prawidłowo zinterpretuje \t jako tabulator i wyśle na wyjście tekst z tabulatorem:

Wynik:

Nie będziesz	ty nawet

Dwa rodzaje interpolacji zmiennych PHP

W języku PHP dostępne są dwa rodzaje składni interpolacji zmiennych. Pierwszy już znasz — po prostu wpisujemy nazwę zmiennej w literale w podwójnym cudzysłowie i gotowe, np.:


$wiek = 19;

echo "Moja córka ma $wiek lat.\n";

Jest to prostsza i najczęściej używana składnia interpolacji w PHP. Druga składnia polega na umieszczeniu interpolowanej zmiennej w klamrze, np.:


echo "Moja córka ma {$wiek} lat.\n";

Składni tej używa się w celu wyraźnego odgraniczenia nazwy zmiennej od otaczającego ją tekstu. Czasami robi się to tylko ze względów estetycznych, aby kod był bardziej przejrzysty, a czasami jest to konieczne do poprawnej interpretacji nazwy zmiennej.

Gdybyśmy na przykład pisali tekst w języku angielskim i chcielibyśmy wyrazić wartość 100cm (w języku polskim przed jednostką miary powinna być spacja, więc ten problem nie występuje) za pomocą interpolacji, to musielibyśmy napisać coś takiego:


$len = 100;
echo "Length: {$len}cm";

Bez klamry nazwa zmiennej „skleiłaby” się z jednostką długości i powstałby błąd:


$len = 100;
echo "Length: $lencm"; // Błąd: nie ma zmiennej o nazwie $lencm

Skoro już wiesz, jak i kiedy używać pojedynczych i podwójnych cudzysłowów w PHP, to pewnie zżera Cię ciekawość, do czego służą dwa pozostałe dostępne rodzaje literałów.

Oba te formaty służą do wygodnego definiowania wielowierszowych literałów łańcuchowych w PHP i różnią się między sobą tym samym, czym różnią się od siebie cudzysłowy podwójne i pojedyncze.

Format PHP heredoc

Format PHP heredoc można nazwać wielowierszowym odpowiednikiem podwójnego cudzysłowu prostego, ponieważ wszystkie znajdujące się w nim zmienne i znaki specjalne są normalnie interpretowane przez PHP. Spójrz na poniższy przykład:


$kto = 'sułtan';
$czyj_syn = 'Mehmeda';
$czyj_brat = 'Słońca i Księżyca';
$czyj_wnuk = 'Boga';
$czyj_pan = 'królestw Macedonii, Babilonu, Jerozolimy, Wielkiego i Małego Egiptu';
$jaki_krol = 'nad Królami';
$jaki_pan = 'nad Panami';
$jaki_rycerz = 'znamienity';
$jaki_dowodca = 'niezwyciężony';
$jaki_obronca = 'niepokonany';

echo <<<AUTOPREZENTACJA
  Ja, $kto, syn $czyj_syn, brat $czyj_brat, wnuk i namiestnik $czyj_wnuk,
  Pan $czyj_pan, Król $jaki_krol, Pan $jaki_pan, $jaki_rycerz rycerz,
  $jaki_dowodca dowódca, $jaki_obronca obrońca miasta Pańskiego, wypełniający
  wolę samego Boga,  nadzieja i uspokojenie dla muzułmanów, budzący przestrach,
  ale i wielki obrońca chrześcijan.
AUTOPREZENTACJA;

Wynik wykonania tego skryptu będzie taki:

Wynik:

Ja, sułtan, syn Mehmeda, brat Słońca i Księżyca, wnuk i namiestnik Boga, Pan królestw Macedonii, Babilonu, Jerozolimy, Wielkiego i Małego Egiptu, Król nad Królami, Pan nad Panami, znamienity rycerz, niezwyciężony dowódca, niepokonany obrońca miasta Pańskiego, wypełniający wolę samego Boga,  nadzieja i uspokojenie dla muzułmanów, budzący przestrach, ale i wielki obrońca chrześcijan.

Dodatkową zaletą literałów heredoc jest to, że nie trzeba w nich stosować znaków specjalnych, aby użyć prostego cudzysłowu podwójnego.

Jak widać, składnia literałów PHP heredoc jest bardzo prosta:

  • Początek literału PHP heredoc wyznacza sekwencja znaków <<<, po której bezpośrednio należy umieścić identyfikator.
  • Identyfikator to dowolny ciąg znaków, który spełnia warunki identyfikatora PHP, a więc takie same jak na przykład te, które obowiązują nazwy zmiennych w PHP.
  • Przed sekwencją początkową literału heredoc może się coś znajdować, na przykład instrukcja PHP echo, natomiast za nią w tym samym wierszu nie może już być niczego.
  • Zakończenie literału heredoc oznacza się tym samym identyfikatorem, co początek.
  • Identyfikator końcowy musi być pierwszy w wierszu (jest wyjątek od tej reguły, opisany poniżej) i musi być zakończony średnikiem.
  • Za średnikiem identyfikatora końcowego w tym samym wierszu mogą znajdować się inne konstrukcje PHP.

Podsumowując, schemat składni literału heredoc wygląda tak:


<<<ID
 Tekst
ID;

Jest jednak jeszcze jeden szczegół dotyczący umiejscowienia identyfikatora końcowego, o którym warto wiedzieć. Spójrz na poniższe dwa przykłady:


<<<AUTOPREZENTACJA
    To jest prawidłowy literał heredoc.
  AUTOPREZENTACJA;

<<<AUTOPREZENTACJA
  To jest nieprawidłowy literał heredoc.
    AUTOPREZENTACJA;

Identyfikator końcowy literału PHP heredoc (a także literału PHP nowdoc) może być wcięty, ale pod warunkiem, że wszystkie wiersze znajdujące się między identyfikatorem początkowym i końcowym mają co najmniej takie samo wcięcie, jak on, lub większe.

Format PHP nowdoc

Format PHP nowdoc jest bardzo podobny do formatu PHP heredoc, tylko zachowuje się analogicznie do cudzysłowu pojedynczego.

Ma nawet bardzo podobną składnię, która od składni heredoc różni się tylko tym, że identyfikator początkowy jest umieszczony w cudzysłowie pojedynczym, np.:


echo <<<'AUTOPREZENTACJA'
  Ja, $kto, syn $czyj_syn, brat $czyj_brat, wnuk i namiestnik $czyj_wnuk,
  Pan $czyj_pan, Król $jaki_krol, Pan $jaki_pan, $jaki_rycerz rycerz,
  $jaki_dowodca dowódca, $jaki_obronca obrońca miasta Pańskiego, wypełniający
  wolę samego Boga,  nadzieja i uspokojenie dla muzułmanów, budzący przestrach,
  ale i wielki obrońca chrześcijan.
AUTOPREZENTACJA;

Wynik:


Ja, $kto, syn $czyj_syn, brat $czyj_brat, wnuk i namiestnik $czyj_wnuk, Pan $czyj_pan, Król $jaki_krol, Pan $jaki_pan, $jaki_rycerz rycerz, $jaki_dowodca dowódca, $jaki_obronca obrońca miasta Pańskiego, wypełniający wolę samego Boga,  nadzieja i uspokojenie dla muzułmanów, budzący przestrach, ale i wielki obrońca chrześcijan.

Zgodnie z oczekiwaniami, w tym przypadku zmienne nie zostały poddane interpolacji.

php string - łańcuch

Podstawowe operacje na łańcuchach w PHP

Na łańcuchach, czyli wartościach typu PHP string, można wykonywać wiele bardzo różnorodnych działań.

Łańcuchy można na przykład łączyć, konwertować na inne typy wartości, prezentować na różne sposoby na stronie internetowej, dzielić, przeszukiwać, wyszukiwać itd. Temat ten jest bardzo szeroki i ważny, ponieważ skrypty PHP często przetwarzają dane tekstowe, choćby pochodzące z formularzy HTML.

W tym rozdziale przedstawiam parę najczęściej wykonywanych operacji na łańcuchach znaków w PHP. Zaczynam od operacji o wdzięcznej nazwie konkatenacja łańcuchów PHP.

Konkatenacja łańcuchów PHP

Konkatenacja to inaczej łączenie łańcuchów. W języku PHP, a także w wielu innych językach programowania, operację tę wykonuje się tak często, że stworzono specjalny operator, który ułatwia jej wykonywanie.

Aby więc połączyć dwa łańcuchy znaków w PHP, wystarczy między nimi umieścić kropkę, która jest operatorem konkatenacji w tym języku, np.:


echo "Nie będziesz ty nawet " . "naszych świń wypasać.";

Wynik:

Nie będziesz ty nawet naszych świń wypasać.

Oczywiście konkatenację można wykonywać także przy użyciu zmiennych. Na przykład, wynik wykonania każdej z poniższych instrukcji echo będzie dokładni taki sam, jak powyższy:


$a = "Nie będziesz ty nawet ";
$b = "naszych świń wypasać.";
$c = $a . $b;

echo $a . "naszych świń wypasać.";
echo $a . $b;
echo $c;

Wyświetlanie łańcuchów znaków

Dostępnych jest kilka konstrukcji PHP i funkcji PHP umożliwiających wyświetlanie łańcuchów znaków na stronie internetowej, np.:

Kiedy trzeba po prostu wyświetlić łańcuch na stronie, to zdecydowanie najczęściej używa się konstrukcji PHP echo. Jest ona łatwa w użyciu i ma bardzo prostą składnię.

Kiedy potrzebna jest większa kontrola nad formatem prezentacji łańcucha znaków, można użyć funkcji PHP printf(), która ma szereg opcji umożliwiających konfigurację łańcucha na różne sposoby.

Ponadto dostępne są także funkcje print_r() i var_dump(), których można używać do wyświetlania zawartości zmiennych dowolnego typu, nie tylko PHP string.

Konwersja wartości typu PHP string

Kolejnym ważnym i często wykonywanym rodzajem operacji na wartościach PHP string jest konwersja.

W PHP można konwertować zarówno łańcuchy znaków na inne typy danych, jak i inne typy danych na łańcuchy znaków. W wyrażeniach wymagających łańcuchów znaków, wartości są automatycznie konwertowane na łańcuchy, np.:


echo 1234;

W tym przypadku konstrukcja echo przekonwertuje wartość typu int na łańcuch (wartość typu PHP string) i wyświetli ją na stronie internetowej.

Automatyczna konwersja na typ PHP string jest wykonywana przez konstrukcję echo i funkcję print, a także w operacjach porównywania danych z łańcuchami.

Jeśli trzeba ręcznie wymusić konwersję na typ PHP string, można zastosować składnię konwersji (string), np.:


$a = 1234;

$a = (string)$a;

var_dump($a); // Wynik: string(4) "1234"

Oprócz tego wartości można konwertować na typ PHP string za pomocą funkcji strval(), która służy specjalnie do zamiany typu na typ string.

Ewentualnie można też używać funkcji settype(), która umożliwia zamianę na różne typy.

Kilka funkcji łańcuchowych PHP, które warto znać

W języku PHP dostępny jest bardzo pokaźny zestaw funkcji służących do pracy z łańcuchami. Wiele z nich przyda Ci się w rozmaitych sytuacjach, ale jest też kilka takich, które przydają się częściej niż inne.

W tej sekcji zwięźle przedstawiam parę funkcji łańcuchowych PHP, które moim zdaniem warto poznać w pierwszej kolejności.

Sprawdzanie długości łańcucha

Do sprawdzania długości łańcucha często używa się funkcji PHP strlen(), która przyjmuje łańcuch jako argument i zwraca długość tego łańcucha w bajtach.

Dlaczego wytłuszczyłem informację, że funkcja PHP strlen() zwraca długość łańcucha w bajtach? Ponieważ to nie zawsze to samo, co długość łańcucha w znakach. Na przykład:


echo strlen('koń'); // Wynik: 4

Mimo że słowo koń zawiera 3 litery, funkcja strlen() zwróciła wartość 4, ponieważ tyle w tym skrypcie bajtów zostało użytych do zakodowania tego słowa (litera ń zajęła dwa bajty). Szczegółowe objaśnienie tego zagadnienia znajduje się w poniższej sekcji Dostęp do znaków wartości typu PHP string.

Jeśli chcesz sprawdzić, ile znaków zawiera dany łańcuch, użyj funkcji mb_strlen(), np.:


echo mb_strlen('koń'); // Wynik: 3

Nie można powiedzieć, że któraś z tych funkcji jest lepsza lub gorsza. Po prostu mają różne zastosowania.

Mieszanie znaków łańcucha PHP

Jeśli chcesz wymieszać zawartość łańcucha znaków, to najprostszym sposobem na to jest użycie funkcji PHP str_shuffle(), która jako argument przyjmuje łańcuch znaków i zwraca inny łańcuch, zawierający te same znaki, ale w losowo zmienionej kolejności. Na przykład:


echo str_shuffle('Gąska Balbinka');

Ta funkcja jednak działa na poziomie bajtów, więc nie powinno się jej używać z łańcuchami zawierającymi znaki spoza alfabetu łacińskiego.

Jeśli chcesz wymieszać znaki dowolnego łańcucha, musisz zastosować odrobinę bardziej skomplikowaną metodę:


$str = 'Gąska Balbinka';

$split = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
shuffle($split);
echo implode('', $split);

Funkcja preg_split() dzieli łańcuch na tablicę znaków. Funkcja shuffle() miesza zawartość tej tablicy, a funkcja implode() łączy elementy tej tablicy z powrotem w łańcuch.

Dzielenie łańcuchów PHP

Łańcuchy w PHP można dzielić na kilka sposobów. Jeden z nich jest pokazany w poprzednim przykładzie. Inny polega na użyciu funkcji explode(), której obowiązkowo należy przekazać znak, wg którego ma nastąpić podział i łańcuch, który ma zostać podzielony. Na przykład:


$str = 'O tak ci Kozacy zaporoscy odpowiadają, plugawcze.';

print_r(explode(' ', $str));

Wynik:

Array
(
    [0] => O
    [1] => tak
    [2] => ci
    [3] => Kozacy
    [4] => zaporoscy
    [5] => odpowiadają,
    [6] => plugawcze.
)

Przeciwieństwem tej funkcji jest funkcja implode(), która przyjmuje tablicę i jej elementy przy użyciu wskazanego znaku.

Dostęp do znaków wartości typu PHP string

Wewnętrznie łańcuchy znaków, czyli wartości typu PHP string, są tablicami bajtów z dołączoną liczbą całkowitą reprezentującą ich długość. Inaczej mówiąc, typ PHP string jest w rzeczywistości tablicą bajtów.

Typ ten nie określa sposobu interpretacji przechowywanych bajtów jako znaków, ponieważ decyduje o tym sposób kodowania skryptu, w którym dany łańcuch się znajduje. Jeśli więc plik PHP jest zapisany w formacie UTF-8, to bajty łańcuchów również są interpretowane jako znaki z zestawu UTF-8.

To oznacza, że jeden element tablicy bajtów będącej reprezentacją łańcucha w PHP nie zawsze musi odpowiadać jednemu znakowi. Tak jest tylko w przypadku kodowań jednobajtowych, takich jak ISO-8859-2. Natomiast w przypadku kodowań wielobajtowych, jak UTF-8, jeden znak może być zakodowany przy użyciu kilku bajtów (od 1 do 4). Dotyczy to choćby wszystkich polskich liter „z ogonkami”, np.:


$a = "koń";

echo $a[2];

Wynik tej instrukcji echo zależy od tego, w jaki sposób zakodowany jest plik zawierający ten skrypt oraz ewentualnie od ustawień kodowania PHP i HTML (jeśli ten skrypt znajduje się na stronie HTML).

Jeżeli zapiszesz plik PHP z kodowaniem ISO 8859-2 i na początku skryptu dodasz odpowiedni nagłówek HTTP informujący o typie i sposobie kodowania treści albo zapiszesz ten plik jako stronę internetową, której kodowanie odpowiednio ustawisz w elemencie HTML meta, to litera ń zostanie zinterpretowana poprawnie, np.:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="ISO-8859-2">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Moja strona testowa</title>
</head>
<body>
<?php
$a = "koń";

echo $a[2];
?>
</body>
</html>

Jeśli zapiszesz ten kod w pliku HTML z kodowaniem ISO 8859-2, to instrukcja echo $a[2]; wyświetli na stronie literę ń. W pozostałych przypadkach ujrzysz na ekranie jakiś niepoprawny wynik, np.: � albo jeszcze coś innego.

Krótko mówiąc, wartość typu PHP string jest tablicą bajtów, a nie znaków. Interpretacja tych bajtów zależy od kodowania pliku zawierającego skrypt i pewnych innych ustawień. Dlatego, nawet jeśli bardzo będzie Cię kusić, nie próbuj uzyskiwać dostępu do poszczególnych znaków łańcucha PHP za pomocą notacji tablicowej.

Aby bezpiecznie pobrać wybrany znak z wartości typu PHP string, można użyć funkcji mb_substr(), która przyjmuje kolejno łańcuch, indeks pierwszego znaku do pobrania i długość podłańcucha do pobrania:


echo mb_substr($a, 2, 1, 'UTF-8'); // Wynik: ń

Jeśli pracujesz z tekstami zawierającymi polskie znaki, używaj funkcji wielobajtowych, takich jak mb_substr(), lub funkcji działających na poziomie bajtów, a nie znaków, takich jak na przykład str_replace(). Odpowiednią informację znajdziesz w opisie wybranej funkcji.

Kiedy jest mowa o typie PHP string i ogólnie o pracy z tekstem w skryptach PHP, nie sposób nie wspomnieć o wyrażeniach regularnych. Wyrażenia regularne PHP to niezwykle potężne narzędzie do przeszukiwania i przetwarzania tekstu. W następnym rozdziale nauczysz się ich podstaw.

Podsumowanie

blank
  1. Łańcuchy znaków w PHP można definiować na cztery sposoby: w pojedynczym cudzysłowie prostym, w podwójnym cudzysłowie prostym, w formacie heredoc i w formacie nowdoc.
  2. W łańcuchach w podwójnym cudzysłowie prostym i w formacie heredoc zmienne i znaki specjalne są interpretowane i zastępowane tym, co reprezentują.
  3. W łańcuchach w pojedynczym cudzysłowie prostym i w formacie nowdoc zmienne i znaki specjalne nie są interpretowane i są traktowane dosłownie.
  4. Jeśli łańcuch nie zawiera zmiennych ani znaków specjalnych, to ze względów wydajnościowych lepiej umieścić go w cudzysłowie pojedynczym.
  5. W PHP dostępne są dwa rodzaje interpolacji zmiennych: wpisanie nazwy zmiennej wprost w tekście oraz umieszczenie nazwy zmiennej w klamrze, aby oddzielić ją od otaczającego tekstu.
  6. Łańcuchy w PHP można między innymi łączyć, wyświetlać na stronie internetowej, konwertować na inne typy oraz przetwarza na wiele innych sposobów.
  7. Typ PHP string jest zaimplementowany jako tablica bajtów.
  8. Odwoływanie się do poszczególnych „znaków” w łańcuchach za pomocą składni dostępu do elementów tablicy jest bardzo ryzykowne i nie należy tego robić. Zamiast tego powinno się używać odpowiednich funkcji, np. wielobajtowych.


blank

Pytania

  1. W jakim cudzysłowie najlepiej jest umieszczać łańcuchy znaków w PHP?
  2. Jakie znasz rodzaje interpolacji zmiennych w PHP?
  3. Co oprócz zmiennych może być interpretowane w łańcuchach znaków PHP?
  4. Czym jest heredoc?
  5. Czym jest nowdoc?
  6. Jakie znasz sposoby konwersji typu PHP string i na typ PHP string?
  7. Jaka jest wewnętrzna implementacja typu PHP string?
  8. Dlaczego nie należy odwoływać się do znaków w łańcuchach za pomocą notacji tablicowej?


blank

Ćwiczenia

  1. Jaki będzie wynik tego kodu?
    
    $age = 25;
    echo "Mam $age lat.";
  2. Jaki będzie wynik tego kodu?
    
    $age = 35;
    echo 'Mam $age lat.';
  3. Wyświetl wartości poniższych zmiennych jako jeden wiersz tekstu na stronie internetowej:
    
    $a = 'Teraz kończymy, ';
    $b = 'daty nie znamy, ';
    $c = 'bo kalendarza nie mamy.';
  4. Stwórz taką stronę internetową, na której poniższy kod da poprawny wynik, tzn. wyświetli w oknie przeglądarki literę ą.
    
    $a = 'mąka';
    
    echo $a[1];

    Następnie pobierz i wyświetl literę ą na stronie w prawidłowy sposób, tzn. za pomocą odpowiedniej funkcji PHP.

Rozwiązania ćwiczeń

  1. Mam 25 lat.
  2. Mam $age lat.
  3. echo $a . $b . $c;
  4. Można utworzyć następującą stronę, w edytorze wybierając dla pliku kodowanie ISO 8859-2:
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="ISO-8859-2">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Moja strona testowa</title>
    </head>
    <body>
    <?php
    $a = "mąka";
    
    echo $a[1];
    ?>
    </body>
    </html>
Udostępnij:
Share

Podobał Ci się ten artykuł?

Oceń go!

Średnia 5 / 5. Liczba głosów: 2

Jeszcze nikt nie głosował. Wyprzedź innych i zagłosuj.

Skoro spodobał Ci się ten artykuł...

Poleć go znajomym!

Ojej :( Powiedz nam, co powinniśmy poprawić!

blank
Podoba Ci się ta strona?

Pomóż nam się rozwijać, wykupując płatne konto. Dzięki temu będziemy mogli tworzyć dla Ciebie jeszcze więcej ciekawych treści, a Ty pozbędziesz się reklam.

Dodaj komentarz