Rozdział 6. ♦ Ciągi znaków, data i czas 173
Ostatnią z omawianych w tej sekcji funkcji jest strtr. Jej schematyczne wywołanie to: strtrtstr. znaki 1. znakiZ)
Funkcja zwraca ciąg str, w którym znaki zawarte w ciągu znakil zostały zamienione na odpowiadające im znaki z ciągu znaki2. Przykładowo jeśli chcielibyśmy usunąć z dowolnego ciągu wszystkie tzw. polskie znaki i zamienić je na łacińskie odpowiedniki, należałoby zastosować wywołanie:
$str - strtrt"przykładowy ciąg”, "ąćęlńóśżź", "acelnoszz")
Po wykonaniu tej instrukcji w zmiennej str zostanie zapisany ciąg "przykładowy ciąg" niezawierający polskich liter.
W tej sekcji zostaną omówione cztery funkcje, które pozwalają na dzielenie i łączenie ciągów znaków: explode, implode, strtok, substr. Funkcja explode pozwala na rozbicie ciągu znaków względem wybranego separatora. Jej wywołanie ma schematyczną postać: explode(separator. ciągi., ile])
Wynikiem działania funkcji jest tablica, której poszczególne komórki zawierają pojedyncze fragmenty ciągu. Parametr 1 Je jest opcjonalny i określa maksymalną liczbę komórek tablicy wynikowej. Poniższy fragment kodu obrazuje sposób wywołania funkcji explode:
<?php
$tab = explode(" ", "jeden dwa trzy cztery"): foreach($tab as $val) echo("$val<br>"):
Zmiennej tab zostanie przypisana czteroelementowa tablica, zawierająca w kolejnych komórkach ciągi znaków: jeden, dwa, trzy i cztery.
Funkcją odwrotną do expl ode jest implode. Łączy ona zawartość poszczególnych komórek tablicy, wstawiając między nie ciąg łączący. Jej schematyczne wywołanie ma postać:
imp1ode(c?ąg, tablica)
Wynikiem będzie łańcuch znaków, w którym pomiędzy komórki tablicy tablica został wstawiony ciąg. Przykładowo po wywołaniu poniższego kodu:
$tab = array("jeden", "dwa", "trzy"):
$str = implodeC : ", $tab):
zmienna str będzie zawierała następujący ciąg znaków: jeden : dwa : trzy.
Zadanie podobne do explode ma funkcja strtok. Sposób jego wykonania jest jednak inny. Zadaniem strtok jest podział na tokeny (podciągi) takie, że każde wywołanie tej funkcji zwraca jeden token. Pierwsze wywołanie powinno mieć postać: strtok(c;ąg. separator)
kolejne powinny odbywać się w pętli typu while. Najlepiej pokazać to na konkretnym przykładzie. Spójrzmy na listing 6.12.