Ł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:

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'.




Formatowanie tekstu w PHP
Tekst, który przechowujemy w zmiennych typu string trzeba kiedyś wyświetlić na ekranie. W PHP mamy wiele instrukcji, które to robią w różny sposób.
Porównywanie ciągów znaków w PHP
Dość często zachodzi potrzeba porównywania zmiennych tekstowych. Można używać w PHP zarówno operatorów jak i wbudowanych funkcji. Często okazuje się, że dają one wyniki różne od oczekiwanych.

© medianauka.pl, 2021-10-30, A-4214



©® Media Nauka 2008-2023 r.