BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 70 | UU: 3380

Wyciąganie fragmentów ciągów

Bardzo często zachodzi potrzeba wyciągnięcia ze zmiennej tekstowej tylko pewnego jej fragmentu. Najłatwiej jest jeśli znana jest długość wyciąganego fragmentu i pozycja w której się znajduje w zmiennej. Np. jeśli ze zmiennej zawieracjącej "1992/11/19" chcemy 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 ciąg z którego będzie wycinany fragment, jako drugi miejsce, z którego będzie rozpoczęte 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 pominie się ten parametr, to zwrócony zostanie pod-ciąg od wskazanego znaku początkowego do końca ciągu).

Przykład 9.7. Użycie funkcji substr()



<?php
   $data 
"1992/11/19";
   
$rok substr($data04);
?>

Ale to oczywiście najprostsza z sytuacji. Bardziej skomplikowanym przykładem będzie wyciągnięcie z tej samej daty wszystkich pól. Można oczywiście 3 razy używać funkcję substr, ale wydajniejszą metodą jest rozbicie tekstu na tablicę korzystając z opisanej przy okazji tablic funkcji explode.

Przykład 9.8. Zastosowanie funkcji explode



<?php
   $data 
"1992/11/19";
   
$tablica explode("/"$data);
?>

W powyższym przykładzie, w pierwszym elemencie tablicy znajdować się będzie rok, w drugim a w trzecim dzień z podanej daty. Można także użyć tej funkcji w bardziej skomplikowany sposób - do rozbicia ciągu zawierającego datę i czas.

Przykład 9.9. Rozszerzony przykład użycia funkcji explode



<?php
   $tekst 
"19/11/1982 01:43:12";
   
$dataiczas explode(" "$tekst);
   
$data explode("/"$dataiczas[0]);
   
$czas explode(":"$dataiczas[1]);
?>

Teraz tablica $data zawiera dzień, miesiąc i rok a tablica $czas godzinę, minutę i sekundę. Ale co jeśli godzina zawiera setne części sekundy, które podawane są po kropce? Robić jeszcze jedno rozbicie? To już za dużo. Lepiej jest użyć funkcji split(), która funcjonuje w podobny sposób co explode, ale rozbija tekst nie za pomocą zwykłych ciągów znaków, ale za pomocą wyrażeń regularnych. Tak więc cały string zawierający datę i czas (z setnymi sekundami włącznie) można rozbić za pomocą jednego wywołania funkcji split().

Przykład 9.10. Zastosowanie funkcji split()



<?php
   $tekst 
"19/11/1982 01:43:12.10";
   
$tablica split("[ /:.]"$tekst);
?>

Teraz w tablicy $tablica znajować się będą po kolei: dzień, miesiąc, rok, godzina, minuta, sekunda i setna część sekundy.

Może też zajść potrzeba wyciągnięcia fragmentu ciągu do jakiegoś znaku, np. pierwszego zdania z jakiegoś tekstu. Wtedy można użyć połączenia funkcji substr() i strpos(), która zwraca numer znaku gdzie znajduje się pierwsze wystąpienie ciągu podanego jako drugi parametr w ciągu podanym jako pierwszy parametr, lub false jeśli pierwszy ciąg nie zawiera w sobie drugiego. A więc pierwsze zdanie podanego ciągu można uzyskać tak:

Przykład 9.11. Zastosowanie funkcji strpos()




<?php
   $tekst 
"To jest tekst. Tego zdania nie będzie widać.";
   
$zdanie substr($tekst0strpos($tekst"."));
?>

Zmienna $zdanie powinna zawierać "To jest tekst" - bez kropki na końcu.

Copyright © 2006-2011 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker