Obsługa stringów

Szybki hosting dla WordPressa

Porównywanie stringów

Podstawową funkcją służącą do porównywania stringów jest strcmp(). Przyjmuje ona dwa argumenty – nazwy stringów, które mają być porównane. Funkcja ta zwraca wartość 0, jeśli ciągi są takie same, wartość większą od zera jeśli pierwszy jest większy od drugiego, lub wartość mniejszą od zera jeśli pierwszy jest mniejszy od drugiego. Funkcja ta rozróżnia wielkość znaków.

Jeśli zachodzi potrzeba porównania dwóch ciągów, to należy użyć funkcji strcasecmp() (parametry i wartości zwracane tak, jak przy funkcji strcmp). Istnieje także funkcja strncmp(), która porównuje tylko taką ilość początkowych znaków z podanych ciągów, jaka została podana jako trzeci parametr tej funkcji. Oczywiście istnieje też wersja funkcji strncmp() ignorująca wielkość znaków: strncasecmp().

Racjonalnym wytłumaczeniem, dlaczego ciągi należy porównywać za pomocą funkcji strcmp() lub pochodnych, a nie zwykłego operatora porównania ‘==’ jest fakt, że interpreter języka PHP automatycznie konwertuje typy zmiennych tak, aby przy porównywaniu były takie same. Tak więc warunek:

<?
 
    $a = 0;
    $b = "0ala";

    if ($a == $b)
        echo "Tak";
    else
        echo "Nie";

?>
wyświetli “Tak”, pomimo że te zmienne są różne. PHP automatycznie konwertuje zmienną $b do typu liczbowego, przez co zamieniana jest ona na liczbową wartość 0 (która faktycznie jest na pierwszym miejscu stringa – pozostałe znaki są odrzucane ponieważ nie są liczbami).

Można teoretycznie użyć operatora “===” – porównania nie tylko wartości, ale też typu, ale tu z kolei warunek:

<?
 
    $a = 0;
    $b = "0";

    if ($a === $b)
        echo "Tak";
    else
        echo "Nie";

?>

wyświetli “Nie”, gdyż pomimo że obie zmienne mają wartość 0, to zmienna $a jest liczbą, a zmienna $b ciągiem tekstowym.

Funkcja strstr() służy do sprawdzenia, czy podany string jest fragmentem innego. Funkcja przyjmuje dwa parametry: string przeszukiwany (‘stóg siana’) i szukany (‘igła’). Jeśli dany ciąg jest fragmentem podanego, to zwracany jest ciąg – fragment przeszukiwanego stringa od pierwszego wystąpienia szukanego ciągu do końca, np.:
<?
 
    $email = "prezydent@polska.pl";
    $domena = strstr($email, "@");
    echo $domena;

?>

wyświetli “@polska.pl”. Jeśli ciąg nie jest znaleziony, to zwracana jest wartość FALSE, dzięki czemu funkcji tej można używać w instrukcjach warunkowych, np.:

<?
 
    $email = "prezydent@polska.pl";

    if (strstr($email, "polska") !== false)
        echo "Email zawiera słowo 'polska'";

?>
Trzeba pamiętać także, że łatwo jest pomylić zwracaną wartość “0” z “nie znaleziono”, ponieważ przy porównywaniu z “false” string zostanie skonwertowany do wartości liczbowej. Aby tego uniknąć należy używać operatora porównania ze sprawdzaniem typu (“===” lub “!==”).

 

Istnieje także wersja tej funkcji ignorująca wielkość znaków: stristr() (przyjmowane parametry i zwracane wartości takie jak przy funcji strstr).

Wyciąganie fragmentów stringów

Bardzo często zachodzi potrzeba wyciągnięcia ze zmiennej tekstowej tylko pewnego jej fragmentu. Najłatwiej jest, jeśli znasz długość wyciąganego fragmentu i pozycja, w której się znajduje w zmiennej. Np. jeśli ze zmiennej zawierającej “1992/11/19” chcesz wyciągnąć rok. Wiadomo, że rok jest na samym początku i ma 4 znaki. Najłatwiej jest użyć funkcji substr().

Jako pierwszy paramter pobiera ona string, z którego będzie wycinany fragment, jako drugi – miejsce, z którego rozpocznie się wycinanie (0 jeśli od pierwszego znaku, liczba ujemna jeśli ma to być ilość znaków od końca), a ostatni, opcjonalny parametr wskazuje ilość znaków do wycięcia (jeśli zostanie pominięty, to zwrócony zostanie podciąg od wskazanego znaku początkowego do końca ciągu).

Zatem, w tym przypadku wywołanie funkcji substr() będzie wyglądało tak:

<?
 
    $data = "1992/11/19";

    $rok = substr($data, 0, 4);
    echo $rok;

?>
Jest to najprostsza z sytuacji. Bardziej skomplikowanym przykładem będzie wyciągnięcie z tej samej daty wszystkich pól. Można oczywiście trzy razy wywołać funkcję substr, ale wydajniejszą metodą jest rozbicie tekstu na tablicę korzystając z opisanej przy okazji tablic funkcji explode. Zatem po wykonaniu kodu:
<?
 
    $data = "1992/11/19";

    $tablica = explode("/", $data);
    echo "rok: $tablica[0], miesiąc: $tablica[1], dzień: $tablica[2]";

?>
w pierwszym elemencie tablicy znajdować się będzie rok, w drugim miesiąc, a w trzecim dzień z podanej daty. Można także wykorzystać tę funkcję w bardziej skomplikowany sposób – do rozbicia stringa zawierającego datę i czas:
<?
 
    $tekst = "19/11/1982 01:43:12";

    $dataiczas = explode(" ", $tekst);
    $data = explode("/", $dataiczas[0]);
    $czas = explode(":", $dataiczas[1]);

    echo "dzień: $data[0], miesiąc: $data[1], rok: $data[2]
";
    echo "godzina: $czas[0], minuta: $czas[1], sekunda: $czas[2]";

?>

Może także zajść potrzeba wyciągnięcia fragmentu stringa do wystąpienia określonego znaku, np. pierwszego zdania w tekście.

Warto wtedy użyć połączenia funkcji substr() i strpos(), która zwraca numer znaku, gdzie znajduje się pierwsze wystąpienie ciągu szukanego (podanego jako drugi parametr) w przeszukiwanym (podanym jako pierwszy parametr), lub false, jeśli pierwszy ciąg nie zawiera w sobie drugiego. Pierwsze zdanie z podanego ciągu można uzyskać tak:
<?
 
    $tekst = 'To jest tekst. Tego zdania nie będzie widać.';
    $zdanie = substr($tekst, 0, strpos($tekst, '.'));
    echo $zdanie;

?>

Na ekranie powinno wyświetlić się zdanie “To jest tekst” – bez kropki na końcu.

Podmiana fragmentów stringów

Do podmiany całych fragmentów ciągu służy funkcja str_replace(), która przyjmuje trzy argumenty: ciąg, który ma być podmieniony; ciąg, który ma go zastąpić i string, którego fragmenty będą podmieniane. Innymi słowy, wszystkie wystąpienia pierwszego ciągu w trzecim ciągu są zamieniane na drugi ciąg. UWAGA: zmienna podawana jako trzeci argument nie jest zmieniana. Poprawiony string jest zwracany przez funkcję. Przykład:

<?
 
    $tekst = "Jeśli jesteś za, podnieś rękę";

    $wynik = str_replace("za", "przeciw", $tekst);
    echo $wynik;

?>

Na ekranie powinien wyświetlić się tekst “Jeśli jesteś przeciw, podnieś rękę”.

Począwszy od wersji PHP 4.0.5, każdy z parametrów funkcji str_replace() może być tablicą. Jeśli zatem trzeci parametr jest tablicą, to operacja podmiany tekstów jest wykonywana na każdym elemencie tablicy, a zwracana zmienna także jest tablicą.

Natomiast jeśli tablicami są pierwszy i drugi parametr, to każdy element z pierwszej tablicy jest podmieniany na odpowiadający mu element drugiej tablicy. Jeśli pierwsza tablica ma więcej elementów niż druga, to te elementy z pierwszej tablicy, które nie mają odpowiednika w drugiej, zamieniane są na puste ciągi. Pozwala to na wiele podmian za jednym wywołaniem funkcji str_replace(), co ma również wpływ na wydajność skryptów.

Podmiana znaków w stringach

W PHP można znaleźć także funkcję, która zamieni wszystkie wystąpienia podanych znaków na inne znaki. Dzięki temu można np. usunąć wszystkie polskie znaki diakrytyczne albo skonwertować je na inną stronę kodową.

Odpowiednia funkcja nazywa się się strtr() i przyjmuje trzy argumenty: string, w którym będą podmieniane znaki; ciąg zawierający znaki do podmiany i ciąg znaków podmieniających. W poniższym przykładzie polskie znaki diakrytyczne zostaną zamieniane na odpowiadające im litery alfabetu łacińskiego:

<?
 
    $tekst = "Zażółć gęślą jaźń";

    $wynik = strtr($tekst, 'ążśźęćńół', 'azszecnol');
    echo $wynik;

?>

Przydatne funkcje

Przedstawimy teraz kilka przydatnych funkcji operujących na stringach:

  • strlen($string) – zwraca ilość znaków w stringu,
  • nl2br($string) – do zamiany znaków końca wiersza na HTMLowe znaczniki (bardzo przydatne przy wyświetlaniu sformatowanego tekstu w oknie przeglądarki),
  • strip_tags($string) – usuwa wszystkie znaczniki HTML z podanego jako argument ciągu. Możliwe jest podanie opcjonalnego drugiego parametru – ciągu, zawierającego nazwy znaczników HTML, które mają pozostać,
  • chop($string), trim($string), ltrim($string), rtrim($string) – usuwa białe znaki (spacja, tabulator, znacznik nowego wiersza) z początku lub końca ciągu. Funkcja chop(), tak jak i rtrim(), usuwa te znaki z końca ciągu, ltrim() z początku, a trim() z początku i końca.

Hosting stworzony dla WordPressa

Masz stronę WWW na WordPressie? My też uwielbiamy ten system dla stron internetowych. Dlatego stworzyliśmy hosting specjalnie dla jego użytkowników.


  • Czy artykuł był pomocny ?
  • Tak   Nie
Szukaj
Generic filters
Tylko dokładne dopasowania
Szukaj w tytułach
Szukaj w treści
Filter by Article Categories
Najczęściej zadawane pytania
Dodatkowe narzędzia hostingu
Statystyki serwera (nowe)
Połączenie SSH
Statystyki serwera (stare)
WebFTP
Autoinstalator
Kontrola wersji (SVN)
Listy mailingowe
Poczta home.pl
Obsługa poczty webmail
Programy pocztowe
Nowa platforma home.pl
Częste pytania
Bezpieczeństwo
Instalacje
Panel klienta
Domeny
Hosting
Serwer Apache
Bazy danych
Certyfikaty SSL
Zamawianie SSL
Instalacja i konfiguracja SSL
Poczta e-mail
Office 365
WordPress Hosting SSD
Dodatki od partnerów
Poprzednia platforma home.pl
Certyfikaty SSL
Zamawianie certyfikatów SSL
Konfiguracja i instalacja SSL
Panel home.pl
Informacje podstawowe
Pulpit
Usługi
Płatności
Profil
Centrum Pomocy
Operacje w Panelu home.pl
Serwery
WebFTP
Informacje podstawowe
Konfiguracja serwerów
Serwery Unix
Serwery Windows
Obsługa baz danych
phpMyAdmin (MySQL)
phpPgAdmin (PgSQL)
myLittleAdmin (MSSQL)
Sklep internetowy eSklep
Panel usługi eSklep
RODO w sklepie internetowym
Panel sklepu internetowego
Pierwsze kroki
Promocja sklepu
Sprzedaż
Pierwsze uruchomienie
Dodatki od partnerów
Asortyment
Klienci
Integracje
Inne integracje
Systemy aukcyjne
Baza produktów
Aplikacje
App store
Aplikacja mobilna
Marketing
Modyfikacja wyglądu
Dokumentacja
Dla deweloperów
Style graficzne
Inne zagadnienia
Raporty i statystyki
Zawartość
Filmy instruktażowe
Konfiguracja sklepu
Rozliczenia i dokumenty
Faktury
Zmiana danych (cesja)
Rozliczenia i płatności
Dokumenty do pobrania
Produkty i usługi
Kreator Stron WWW
eCommerce
Moduły
Ustawienia
Szablony
Nawigacja
Publikacja i dodatki
Szybki start
Prestahosting
Profesjonalne usługi IT
Certyfikaty SSL
Przywracanie danych
Udostępnienie logów
Operacje na plikach i bazach danych
WordPress
Terminal płatniczy SumUp
Wordpress hosting SSD
Office 365
OneDrive
Domeny
Informacje podstawowe
Rejestracja / opłacanie
Konfiguracja domen
Transfer domen
Giełda domen
Dodatki do domen
Serwery VPS
Skrzynki e-mail
Microsoft Exchange
Cloud Email Xchange
Obsługa skrzynek w Panelu home.pl
Jak zarejestrować Personal email lub Business email?
Bezpieczeństwo
eKsięgowość
Reklama internetowa
Reklama Allegro Ads
Tworzenie stron WWW
Contact LEADer
Reklama banerowa Google
Zakupy Google
Google Ads (AdWords)
eKampanie Google
SEMSTORM
Pozycjonowanie
rankingCoach
Baza wiedzy
Facebook
Systemy CMS
Internet w praktyce
Przydatne programy
Konfiguracja programów FTP
Zagadnienia techniczne
.htaccess
mod_rewrite
Kursy i specyfikacje
Kurs HTML
Kurs PHP
Kurs SQL
Rejestracja usług
RODO w home.pl
English
Control Panel
Webmail
FTP
Office 365
WordPress
SSL
Aplikacje w marketplace
SimplySign
SiteLock - ochrona WWW
Dropsuite Email Backup
CCleaner
Antywirus Kaspersky
Dropbox - dysk w chmurze
Płatności PayU
Programy antywirusowe AVAST
Office 365
AVG PC TuneUp
Reklama na start
Google AdWords
Zareklamuj stronę WWW na Facebook
Cloud Email Xchange
Brand24
Microsoft OneDrive
FreshMail.pl
Tłumaczenia online
G Suite - poczta Gmail
Program prowizyjny
Acronis Backup
Informacje podstawowe
Ustawienia dodatkowe
Panel użytkownika
Panel administratora
lub