Spis treści:
Łańcuchy (przetwarzanie tekstu, string, ciągi znaków) w PHP
Za przechowywanie tekstu w PHP odpowiada typ string. Jest to typ łańcuchowy, w którym pojedynczy znak zajmuje 1 bajt, a maksymalna długość tekstu nie może być większa jak 2 GB. PHP traktuje ciągi znaków jak ciągi bajtów, stąd mogą wystąpić przy przetwarzaniu tekstu Unicode różnego rodzaju problemy.
Oznaczanie tekstu w PHP
Tekst w PHP oznaczamy poprzez użycie:
- cudzysłowu,
- apostrofu,
- składni heredoc,
- składni nowdoc.
Przy użyciu cudzysłowu i heredoc interpreter PHP zamieni występującą nazwę zmiennej w ciągu znaków na jej wartość. W przykładzie na końcu niniejszego artykułu pokazano wszystkie metody oznaczania w PHP ciągów znakowych i różnice między tymi oznaczeniami.
Uwaga! Aby użyć znaku cudzysłowu wewnątrz ciągu oznaczonego cudzysłowem używamy znaku "\". Oto przykład: $tekst="W PHP często używamy znaku \" (cudzysłów)".
Operator łączenia łańcuchów
Operatorem łączenia ciągów znaków jest w PHP kropka ".", a nie znak plusa, jak w przypadku liczb. Trzeba się do tego przyzwyczaić, gdyż dodawanie zmiennych tekstowych w postaci $tekst1+$tekst2 zamiast $tekst1.$tekst2 jest jednym z najczęściej popełnianych błędów w PHP. W przykładzie drugim zaprezentowano operator łączenia tekstów w PHP.
Instrukcje dostępne w PHP
W PHP mamy do dyspozycji wiele instrukcji, które dają możliwość przetwarzania tekstu.
Oto wybrane instrukcje i funkcje dotyczące przetwarzania tekstu w PHP wraz z linkami do ich opisu.
Lista w trakcie budowy...
Funkcja | Składnia | Opis |
iconv_strlen | iconv_strlen($tekst, $kodowanie) | Funkcja iconv_strlen w PHP zwraca liczbę znaków w tekście, z możliwością wyboru strony kodowania znaków w tekście. |
lcfirst | lcfirst($tekst) |
Funkcja lcfirst w PHP zamienia pierwszą literę w przekazanym argumencie na małą literę. |
ltrim | ltrim($tekst[,$znaki]) | Funkcja ltrim w PHP usuwa z końca tekstu białe znaki (lub inne). |
mb_strlen | mb_strlen($tekst, 'UTF-8') | Funkcja mb_strlen w PHP zwraca liczbę znaków w tekście. Przedrostek "mb" oznacza "wielobajtowy". |
nl2br | nl2br($tekst, true/false) | Funkcja dodaje przed znacznikiem końca tekstu (\r\n, \n\r, \n and \r) znacznik XHTML <br /> (dla wartości true drugiego parametru) lub <br> (HTML) dla wartości false drugiego z parametrów. |
printf | printf("format", $arg1,..., $argN) |
Funkcja printf wyświetla wartości zmiennych podanych jako argumenty funkcji w odpowiednim formacie. |
rtrim | rtrim($tekst[,$znaki]) | Funkcja rtrim w PHP usuwa z początku tekstu białe znaki (lub inne). |
str_ireplace | str_ireplace($z, $na, $tekst2) | Funkcja str_replace w PHP daje możliwość wymiany część tekstu na inny, bez względu na wielkość liter. |
str_replace | str_replace($z, $na, $tekst2) | Funkcja str_replace w PHP daje możliwość wymiany część tekstu na inny. |
strcasecmp | strcasecmp($tekst1, $tekst2) | Funkcja strcasecmp w PHP jest wykorzystywana do porównywania ciągów znakowych bez rozróżniania wielkich i małych liter. |
strcmp | strcmp($tekst1, $tekst2) | Funkcja strcmp w PHP jest wykorzystywana do porównywania ciągów znakowych. |
stripos | stripos( $tekst,$ciag [,$start]) | Działa jak funkcja strpos, ale nie rozróżnia wielkości liter. |
stristr | stristr( $tekst,$ciag [,$tryb]) | Działa jak funkcja strstr, ale nie rozróżnia wielkości liter. |
strlen | strlen($tekst) | Funkcja strlen w PHP zwraca długość tekstu w bajtach. To jedna z najczęściej używanych funkcji tekstowych. |
strncmp | strncmp($tekst1, $tekst2, $n) | Funkcja strncmp w PHP jest wykorzystywana do porównywania $n - pierwszych ciągów znakowych. |
strrpos | strrpos( $tekst, $podciąg [,$start]) | Funkcja strrpos w PHP służy do znajdowania podciągu znaków w badanym tekście, rozpoczynając przeszukanie od końca (szuka wystapień danego ciągu z prawej strony danego tekstu). Funkcja zwraca numer pozycji odnalezionego ciągu. |
strpos | strpos( $tekst, $podciąg [,$start]) | Funkcja strpos w PHP służy do znajdowania podciągu znaków w badanym tekście, rozpoczynając od wskazanego miejsca. Funkcja zwraca numer pierwszej pozycji odnalezionego ciągu. |
strtolower | strtolower( $tekst) | Funkcja strtolower odpowiada za zamianę ciągu znaków wielkich liter na ciąg małych liter. |
strtoupper | strtoupper( $tekst) | Funkcja strtoupper odpowiada za zamianę ciągu znaków małych liter na ciąg wielkich liter. |
strstr | strstr( $tekst,$ciag [,$tryb]) | Funkcja strstr w PHP zwraca część łańcucha począwszy od pierwszego wystąpienia szukanego podciągu znaków aż do końca przeszukiwanego tekstu lub od początku tekstu do pozycji znalezionego podciągu znaków. |
strtr | strtr( $tekst,$z,$na) lub strtr($tekst,$slownik) | Funkcja strtr w PHP pozwala na tłumaczenie znaków i/lub zamianę ich na inne. |
substr | substr( $tekst,$od,$dlugosc) | Funkcja substr w PHP wycina fragment tekstu. |
substr_replace | substr_replace( $tekst,$na,$start [,$ile]) | Funkcja substr_replace w PHP umożliwia zamianę fragmentu ciągu tekstowego na inny. |
trim | trim($tekst[,$znaki]) | Funkcja trim w PHP usuwa z początku i końca tekstu białe znaki (lub inne). |
ucfirst | ucfirst($tekst) |
Funkcja ucfirst w PHP zamienia pierwszą literę w przekazanym argumencie na wielką literę. |
ucwords | ucwords($tekst) |
Funkcja ucwords w PHP zamienia pierwszą literę w każdym wyrazie w przekazanym argumencie na wielką literę. |
Przykład 1
Przykład ten prezentuje różne metody zapisywania tekstu w zmiennej i interpretowania zmiennych w nim zawartych.
<?php //zmienna tekstowa
$planeta='Jowisz';
//formaty zapisu tekstu
$t1='Moja ulubiona planeta to $planeta.';
$t2="Moja ulubiona planeta to $planeta.";
$t3=<<<poczatek1
Moja ulubiona planeta to $planeta.
poczatek1;
$t4=<<<'poczatek2'
Moja ulubiona planeta to $planeta.
poczatek2;
//wyświetlenie zmiennych
print $t1.'<br>';
print $t2.'<br>';
print $t3.'<br>';
print $t4.'<br>'; ?>
Jak działa skrypt? W zmiennej $planeta przechowujemy tekst "Jowisz". Użyjemy go potem kilka razy.
Do zmiennej $t1 przypisujemy tekst za pomocą notacji apostrofu. W tej notacji nazwy zmiennych nie są interpretowane, więc przy wyświetlaniu potem tej zmiennej, wyświetlana jest nazwa zmiennej $planeta zamiast wartości tej zmiennej.
Do zmiennej $t2 przypisujemy dokładnie ten sam tekst, ale używany cudzysłowu. Efekt wyświetlenia zmiennej $t2 jest inny, gdyż teraz w miejsce zmiennej $planeta interpreter języka wstawił wartość przechowywaną w tej zmiennej, a więc słowo "Jowisz".
Zmienna $t3 została zapisana z użyciem notacji heredoc i działa tak samo jak cudzysłów.
Zmienna $t4 została zapisana w notacji nowdoc i działa tak samo jak przy użyciu apostrofów.
UWAGA! Można w ciągu znaków używać klamer dla oznaczenia zmiennej. To poprawia bardzo przejrzystość kodu. Polecany przez nas sposób zapisu wartości w zmiennej tekst będzie następujący:
$t1='Moja ulubiona planeta to {$planeta}.';
Wtedy będzie wiadomo, że kropka na końcu zdania nie jest częścią nazwy zmiennej. To bardzo poprawia czytelność kodu.
Przykład 2
Pokażemy w tym przykładzie jaki jest efekt łączenia prawidłowego i błędnego tekstów.
<?php $t1='1'; $t2='2'; echo "Gdy użyjemy znaku + otrzymamy wynik łączenia: "; echo $t1+$t2; echo '
'; echo "Gdy użyjemy znaku . otrzymamy wynik łączenia: "; echo $t1.$t2; ?>
Jak działa skrypt? W jednej zmiennej przechowujemy tekst '1', a w drugiej '2'. Gdy użyjemy znaku "+", interpreter wyświetli wynik dodawania liczb i w efekcie otrzymamy typ int wyniku. Nie o to nam chodziło. Chcieliśmy połączyć znaki '1' i '2' w ciąg dwóch znaków. Gdy użyjemy operatora kropki "." uzyskamy zadany efekt, czyli '12'.
© medianauka.pl, 2021-10-30, A-4214
Data aktualizacji artykułu: 2024-06-29