2. Łańcuchy tekstowe w PHP

Transkrypt

2. Łańcuchy tekstowe w PHP
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
2. Łańcuchy tekstowe w PHP
2.1 Apostrofy i cudzysłowy
Łańcuch tekstowy w języku PHP to ciąg znaków ograniczony apostrofami (') lub
cudzysłowami ("). Te znaki ograniczające nie powinny być traktowane wymiennie,
ponieważ posiadają różne znaczenie!
Apostrofy powodują traktowanie tekstu dosłownie, bez żadnych modyfikacji, dlatego
zawsze powinniśmy używać apostrofów, o ile nie potrzebujemy specjalnej funkcji
cudzysłowów, to jest zastępowania zmiennych. Funkcja ta polega na zastąpieniu nazw
zmiennych występujących w łańcuchach ich wartościami. Oto przykład:
$x = 'Jacek';
echo '$x wygrał milion';
echo "$x wygrał milion";
$x wygrał milion
Jacek wygrał milion
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
2.2 Operatory łączenia łańcuchów („.” i „.=”)
Łańcuchy tekstowe są bardzo intensywnie używane w PHP, stąd istnieje kilka
specyficznych dla nich operatorów. Najważniejszy to operator łączenia łańcuchów
zapisywany za pomocą kropki. Oto przykład:
$a = 'raz';
$b = $a.', dwa, trzy.';
echo $b;
raz, dwa, trzy.
Operator łączenia ma też swoją formę z przypisaniem: „.=”. Jej związek ze zwykłą formą
operatora jest analogiczny jak między „+” i „+=”. Łańcuch tekstowy po prawej stronie
operatora zostaje dołączony do łańcucha po lewej. Oto przykład:
$a = 'raz';
$a .= ', dwa, trzy.';
echo $a;
raz, dwa, trzy.
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
Co stanie się w przypadku, gdy (np. omyłkowo) użyjemy operatora „.=” na zmiennej,
która nigdzie wcześniej nie została zainicjowana?
$a .= 'tekst';
echo $a;
Otóż niezainicjowana zmienna jest typu NULL, który przy konwersji na łańcuch daje
łańcuch pusty. Efektem działania powyższego kodu będzie więc
text
Warto zauważyć, że łączyć można też używając zastępowania zmiennych. Oto przykład
(ta metoda jest szybsza od „.” dla więcej niż 2 łączonych łańcuchów):
$a = 'raz'; $b = 'dwa'; $c = 'trzy';
$w1 = $a.$b.$c;
$w2 = "$a$b$c";
echo $w1; ?><br><? echo $w2;
razdwatrzy
razdwatrzy
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
2.3 Priorytet operatorów łączenia
Szczególną uwagę należy zwrócić na zastosowanie operatora kropki i operatorów
arytmetycznych + i -. Wszystkie trzy mają ten sam priorytet, co czasem prowadzi do
pomyłek:
$x = 28;
echo 'x podwojony: '.$x + $x;
28
Czemu nie „x podwojony: 56”? Ze względu na równość priorytetów, najpierw jest
wykonywane łączenie łańcuchów, dając w efekcie łańcuch „x podwojony: 28”, pierwsze
$x jest niejawnie konwertowane na tekst. Następnie do tego łańcucha jest dodawane
drugie $x, w związku z czym następuje niejawna konwersja łańcucha na liczbę. Ponieważ
pierwszy znak łańcucha nie jest cyfrą, wynikiem jest 0, a ostatecznie otrzymujemy 0 +
28 = 28. Aby tego uniknąć należy użyć nawiasów:
echo 'x podwojony: '.($x + $x);
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
2.4 Funkcja echo()
Tej funkcji używaliśmy już w przykładach, jak łatwo się domyślić wyprowadza ona swoje
argumenty do wysyłanego kodu strony WWW. Warto jednak poznać kilka jej ciekawych
zachowań.
echo() wieloliniowe
Tekst wysyłany przez echo() może być przenoszony do następnej linii, końce linii zostaną
wysłane do kodu HTML (oczywiście jako znaki końca linii, nie jako <br>!)
echo 'mogę napisać tak';
echo 'mogę
napisać
tak';
echo() i długie teksty
Długie, wieloliniowe teksty można wysyłać poprzez echo() korzystając ze znaczników
początku i końca tesktu. Oto przykład:
mgr inż. Grzegorz Kraszewski – TECHNOLOGIE INTERNETOWE 3 – wykład 2: „Łańcuchy tekstowe w PHP”.
echo <<<ZNACZNIK
Wysyłam długi tekst do strony WWW, zostanie on wysłany
w całości tak jak jest, ale ewentualne nazwy zmiennych
zostaną zastąpione ich wartościami, tak jak przy łańcuchu
tekstowym w cudzysłowach.
ZNACZNIK;
Ostatnia linia musi zawierać samo słowo znacznika i średnik (żadnych spacji na końcu.
Oczywiście znacznik może być dowolnym słowem.
Krótka notacja echo()
Szczególnie wygodna, gdy wtrącamy małe wstawki dynamiczne do większego kodu
HTML, dzięki zwartemu zapisowi:
<div>Piszę sobie jakiś kod HTML i nagle chciałbym wstawić wartość
jakiejś zmiennej PHP, więc wstawiam: <?=$zmienna ?> i już, prawda jakie to
wygodne?</div>

Podobne dokumenty