Składnia
Łańcuch
znaków
można
utworzyć
na
trzy
sposoby
.
Pojedyncze
cudzysłowy
Najprostszym
sposóbem
na
zdefiniowanie
prostego
łańcucha
znaków
,
jest
umieszczenie
go
w
pojedynczych
cudzysłowach
(
znak
'
)
.
Aby
w
takim
łańcuch
umieścić
symbol
pojedynczego
cudzysłowu
,
należy
go
poprzedzić
ukośnikiem
wstecznym
(
\
)
,
tak
jak
w
wielu
innych
językach
programowania
.
Jeśli
ukośnik
wsteczny
ma
wystąpić
przed
symbolem
pojedynczego
cudzysłowu
lub
na
końcu
łańcucha
,
wtedy
należy
napisać
go
dwukrotnie
.
W
przypadku
użycia
ukośnika
wstecznego
z
innym
znakiem
,
ukośnik
też
zostanie
wyświetlony
!
Nie
ma
zatem
potrzeby
pisania
ukośnika
dwukrotnie
w
innych
sytuacjach
.
Notatka
:
W
PHP
3
,
ostrzeżenie
na
poziomie
E_NOTICE
zostanie
wyświetlone
,
jeśli
zajdzie
powyższa
sytuacja
.
Notatka
:
W
przeciwieństwie
do
dwóch
pozostałych
składni
,
zmienne
nie
będą
zamienione
na
swoje
wartości
,
kiedy
pojawią
się
pomiędzy
pojedynczymi
cudzysłowami
.
Podwójne
cudzysłowy
Kiedy
łańcuch
znaków
jest
umieszczony
pomiędzy
podwójnymi
cudzysłowami
,
PHP
interpretuje
więcej
sekwencji
cytowania
dla
znaków
specjalnych
:
Tabela
7-1
.
Znaki
cytowane
(
specjalne
)
sekwencja
|
znaczenie
|
|
nowa
linia
(
LF
lub
0x0A
(10
)
w
ASCII
)
|
|
powrót
karetki
(
CR
lub
0x0D
(13
)
w
ASCII
)
|
|
tabulacja
pozioma
(
HT
lub
0x09
(9
)
w
ASCII
)
|
|
odwrotny
ukośnik
|
|
znak
dolara
|
|
cudzysłów
podwójny
|
|
sekwencja
znaków
pasująca
do
powyższego
wyrażenia
regularnego
daje
znak
zapisany
w
notacji
ósemkowej
|
|
sekwencja
znaków
pasująca
do
powyższego
wyrażenia
regularnego
daje
znak
zapisany
w
notacji
szesnastkowej
|
Tak
jak
w
poprzedniej
składni
,
zapisanie
ukośnika
wstecznego
przed
każdym
innymi
znakiem
spowoduje
wyświetlenie
zarówno
ukośnika
,
jak
i
znaku
.
Ale
najważniejszą
właściwością
podwójnych
cudzysłowów
jest
to
,
że
zapisane
w
nich
zmienne
zostaną
zamienione
na
ich
wartości
.
Więcej
informacji
w
rozdziale
parsowanie
łańcuchów
znaków
.
Składnia
Heredoc
Jeszcze
jednym
sposobem
na
zapisanie
łańcucha
znaków
jest
użycie
skladni
heredoc
(
"
"
)
.
Po
operatorze
powinno
się
umieścić
identyfikator
i
takim
samym
identyfikatorem
trzeba
zakończyć
łańcuch
znaków
.
Identyfikator
zamykający
musi
zaczynać
się
w
pierwszej
kolumnie
nowej
linii
.
Identyfikator
musi
też
podlegać
regułom
nazewnictwa
w
PHP
:
musi
się
składać
wyłącznie
z
alfanumerycznych
znaków
oraz
znaku
podkreślenia
i
musi
zaczynać
się
od
litery
lub
znaku
podkreślenia
.
Ostrzeżenie
|
Ważne
by
pamiętać
,
że
linia
zawierająca
identyfikator
zamykający
nie
może
zawierać
żadnych
innych
znaków
,
z
wyjątkiem
średnika
(
;
)
.
Znaczy
to
przede
wszystkim
,
że
identyfikator
zamykający
nie
może
być
wcinany
,
i
nie
może
być
żadnych
spacji
ani
tabulacji
przed
lub
za
średnikiem
.
Najbardziej
dokuczliwym
ograniczeniem
jest
to
,
że
wewnątrz
tego
łańcucha
znaków
nie
może
być
znaku
powrotu
karetki
(
\r
)
na
końcu
linii
,
jedynie
znak
nowej
linii
(
\n
)
.
Ponieważ
Microsoft
Windows
używa
jako
znaku
końca
linii
sekwencji
\r\n
,
łańcuchy
znaków
zapisne
w
składni
heredoc
mogą
nie
działać
,
jeśli
skrypt
zostanie
napisany
w
edytorze
windowsowym
.
Na
szczęście
większość
edytorów
tekstowych
udostępnia
możliwość
zapisania
pliku
w
uniksowym
formacie
końca
linii
.
|
Składnia
heredoc
zachowuje
się
podobnie
jak
tekst
w
cudzysłowach
podwójnych
.
Oznacza
to
też
,
ze
nie
ma
potrzeby
cytowania
cudzysłowów
w
tej
składni
,
ale
nadal
można
używać
znaków
cytowanych
,
opisanych
powyżej
.
W
tej
składni
nazwa
zmiennej
zamieniana
jest
na
jej
wartość
,
ale
należy
zachować
ostrożność
przy
zapisie
złożonych
zmiennych
razem
z
tekstem
.
Przykład
7-2
.
Przykład
składni
heredoc
?php
$str
=
EOD
Przykład
łańcucha
znaków
,
zajmującego
kilka
linii
,
zapisanego
w
składni
heredoc
.
Przykładowe
zastosowanie
w
przezentacji
liryki
.
Litwo
!
Ojczyzno
moja
!
ty
jesteś
jak
zdrowie
;
Ile
cię
trzeba
cenić
,
ten
tylko
się
dowie
,
Kto
cię
stracił
.
Dziś
piękność
twą
w
całej
ozdobie
Widzę
i
opisuję
,
bo
tęsknię
po
tobie
.
\tAdam
Mickiewicz
-
Pan
Tadeusz
EOD
;
/
*
Bardziej
złożony
przykład
,
ze
zmiennymi
*
/
class
foo
{
var
$foo
;
var
$bar
;
function
foo(
)
{
$this
-
foo
=
'Foo'
;
$this
-
bar
=
array('Bar1'
,
'Bar2'
,
'Bar3')
;
}
}
$foo
=
new
foo()
;
$name
=
'MojeImię'
;
echo
EOT
Nazywam
się
"$name
"
.
Wyświetlam
$foo
-
foo
.
A
teraz
wyświetlam
z
tablicy
:
{
$foo
-
bar[1]
}
.
Po
dwukropku
powinien
pojawić
się
znak
'
A'
:
\x41
EOT
;
?
|
|
Notatka
:
Obsługa
składni
heredoc
została
dodana
w
PHP
4
.
Parsowanie
zmiennych
Kiedy
łańcuch
znaków
jest
zapisany
w
cudzysłowach
podwójnych
lub
w
składni
heredoc
,
zawarte
w
nim
nazwy
zmiennych
są
parsowane
,
tzn
.
zamieniane
na
ich
wartości
.
Są
dwa
rodzaje
składni
,
prosta
i
złożona
.
Składnia
prosta
jest
najbardziej
popularna
i
najwygodniejsza
,
pozwala
na
parsowanie
zmiennej
,
wartości
z
tablicy
oraz
właściwości
obiektu
.
Składnia
złożona
pojawiła
się
w
PHP
4
,
i
można
ją
rozpoznać
po
nawiasach
klamrowych
,
otaczających
wyrażenie
.
Składnia
prosta
Jeśli
wewnątrz
zmiennej
pojawi
się
znak
dolara
(
$
)
,
parser
pobierze
tyle
znaków
,
ile
tylko
się
da
,
aby
utworzyć
poprawną
nazwę
zmiennej
.
Aby
jawnie
określić
koniec
nazwy
zmiennej
,
należy
ją
zapisać
w
klamrach
.
Podobnie
działa
parsowanie
elementu
tablicy
lub
właściwości
obiektu
.
Dla
tablic
,
prawy
nawias
prostokątny
(
]
)
oznacza
koniec
indeksu
.
Dla
właściwości
obiektu
obowiązują
te
same
reguły
jak
dla
zwykłych
zmiennych
,
jednak
nie
działają
tu
opisane
powyżej
sztuczki
ze
zmiennymi
.
Do
wyrażeń
bardziej
skomplikowanych
należy
używać
składni
złożonej
.
Składnia
złożona
Nazwa
tej
składni
nie
pochodzi
od
skomplikowanego
zapisu
,
tylko
od
możliwości
obsługi
bardziej
złożonych
wyrażeń
.
Za
pomocą
tej
składni
można
umieszczać
w
łańcuchach
znaków
każdą
wartość
istniejącą
w
przestrzeni
nazw
.
Odpowiednie
wyrażenie
pisze
się
tak
,
jakby
miało
ono
znajdować
się
gdziekolwiek
poza
łańcuchem
znaków
,
a
potem
tylko
umieszcza
się
je
między
{
i
}
.
Ponieważ
nie
można
cytować
"
{"
,
składnia
ta
będzie
prawidłowo
rozpoznana
tylko
wtedy
,
kiedy
$
znajduje
się
bezpośrednio
za
{
.
(Użyj
"{\$
"
lub
"\{$
"
aby
uzyskać
"{$"
)
.
Poniżej
kilka
przykładów
:
Indeksowanie
łańcucha
(
ofsety
)
Dostęp
do
pojedynczego
znaku
łańcucha
jest
możliwy
po
podaniu
jego
indeksu
(
ofsetu
)
w
nawiasach
klamrowych
,
zaraz
po
nazwie
zmiennej
.
Pierwszy
znak
w
łańcuchu
ma
indeks
zero
.
Notatka
:
Dla
zachowania
kompatybilności
wstecznej
,
nadal
można
używać
nawiasów
kwadratowych
,
jednak
składnia
ta
w
PHP
4
uznana
jest
za
przestarzałą
.
Przykład
7-3
.
Przykłady
używania
łańcuchów
znaków
?php
/
*
Przypisywanie
łańcucha
do
zmiennej
*
/
$str
=
"
To
jest
łańcuch
znaków"
;
/
*
Dołączanie
innego
łańcucha
*
/
$str
=
$str
.
"
a
to
jego
dalsza
część"
;
/
*
inny
sposób
dołączania
,
ze
znakiem
nowej
linii
na
końcu
*
/
$str
.=
"
wraz
ze
znakiem
nowej
linii
na
końcu.\n"
;
/
*
Ten
łańcuch
będzie
zawierać
:
"
p
Liczba
:
9
/
p
"
*
/
$num
=
9
;
$str
=
"
p
Liczba
:
$num
/
p
"
;
/
*
Natomiast
tutaj
będzie
:
"
p
Liczba
:
$num
/
p
"
*
/
$num
=
9
;
$str
=
'
p
Liczba
:
$num
/
p
'
;
/
*
Pobranie
pierwszego
znaku
łańcucha
*
/
$str
=
'To
jest
przykład
.'
;
$pierwszy
=
$str{0}
;
/
*
Ostatni
znak
łańcucha
*
/
$str
=
'Dalsza
część
przykładu
.'
;
$ostatni
=
$str{strlen($str)-1}
;
?
|
|
Przydatne
funkcje
i
operatory
Łańcuchy
znaków
łączy
się
za
pomocą
operatora
'
.
'
(kropka
)
.
Proszę
pamiętać
,
że
operator
dodawania
'
+
'
nie
wykonuje
operacji
łączenia
łańcuchów
.
Więcej
informacji
w
rozdziale
operatory
łańcuchowe
.
PHP
posiada
mnóstwo
funkcji
operujących
na
łańcuchach
znaków
.
Najwięcej
na
ten
temat
w
rozdziale
funkcje
łańcuchowe
.
Poza
tym
obsługiwane
są
wyrażenia
regularne
dla
potrzeb
zaawnsowanych
operacji
znajdź
i
zamień
(
w
dwóch
odmianach
:
Perl
oraz
POSIX
extended
)
.
Są
także
funkcje
obsługi
łańcuchów
URL
,
jak
również
funkcje
szyfrowania
i
deszyfrowania
łańcuchów
(
mcrypt
oraz
mhash
)
.
Jeśli
nadal
nie
znalazłeś
tego
,
czego
potrzebujesz
,
być
może
pomogą
ci
funkcje
kontroli
typu
znaków
.
Konwersja
łańcuchów
znaków
Jeśli
łańcuch
znaków
jest
konwertowany
na
postać
liczbową
,
rezultat
konwersji
będzie
zależał
od
poniższych
czynników
.
Łańcuch
zostanie
skonwertowany
do
typu
float
,
jeśli
zawiera
znaki
"
."
,
"e
"
lub
"E
"
.
W
przeciwnym
razie
zostanie
skonwertowany
do
typu
integer
.
Wartość
liczbowa
łańcucha
znaków
zależy
od
pierwszych
znaków
tego
łańcucha
.
Jeśli
łańcuch
zaczyna
się
od
poprawnej
wartości
liczbowej
,
wartość
ta
będzie
używa
przy
konwersji
.
W
przeciwnym
razie
zwrócona
będzie
wartość
0
(
zero
)
.
Poprawna
wartość
liczbowa
zaczyna
się
od
opcjonalnego
znaku
,
po
którym
znajduje
się
jedna
,
lub
kilka
cyfr
(
opcjonalnie
zawierające
przecinek
dziesiętny
)
,
po
którym
opcjonalnie
znajduje
się
eksponent
.
Eksponent
jest
to
znak
"
e
"
lub
"E
"
,
po
którym
następuje
jedna
,
lub
więcej
cyfr
.
Kiedy
pierwszym
wyrażeniem
jest
łańcuch
znaków
,
typ
zmiennej
będzie
zależał
od
drugiego
wyrażenia
.
Więcej
informacji
na
temat
tej
konwersji
znajduje
się
w
podręczniku
Uniksa
,
na
stronie
polecenia
strtod(
3
)
.
Jeśli
chciałbyś
przetestować
któryś
z
przykładów
w
tym
rozdziale
,
możesz
je
skopiować
i
wkleić
,
a
następnie
dodać
poniższą
linię
i
obserwować
rezultaty
.