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
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.
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
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);
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:
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>