LI. Funkcje wyra┐e± regularnych
Wyra┐enie regularne s▒ u┐ywane do kompleksowych manipulacji na │a±cuchach
znakowych w PHP. Do funkcji kt≤re wspieraj▒ wyra┐enia regularne nale┐▒:
-
ereg
-
ereg_replace
-
eregi
-
eregi_replace
-
split Wszystkie te funkcje pobieraj▒
ci▒g znak≤w, opisuj▒cych wyra┐enia regularne, jako pierwszy argument. PHP uzywa
rozszerzonych wyra┐e± regularnych POSIX zdefiniowanych przez POSIX 1003.2. Aby
uzyskaµ pe│ny opis wyra┐e± regularnych POSIX zobacz strony manuala regex
dostΩpne w katalogu regex dystrybucji PHP. Pliki te s▒ dostΩpne w formacie
manuala, wiΩc bΩdziesz musia│ u┐yµ polecenia w rodzaju man
/usr/local/src/regex/regex.7 aby je przeczytaµ.
Przyk│ad 1. Przyk│ady wyra┐e± regularnych ereg("abc",$string);
/* Zwraca true je╢li "abc"
wystΩpuje gdziekolwiek w $string. */
ereg("^abc",$string);
/* Zwraca true je╢li "abc"
znajduje siΩ na pocz▒tku $string. */
ereg("abc$",$string);
/* Zwraca true je╢li "abc"
znajduje siΩ na ko±cu $string. */
eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_AGENT);
/* Zwraca true je╢li przegl▒dark▒
jest Netscape 2, 3 lub MSIE 3. */
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)",
$string,$regs);
/* Umieszcza trzy s│owa oddzielone spacjami
w zmiennych $regs[1], $regs[2] i $regs[3]. */
$string = ereg_replace("^","<BR>",$string);
/* Wstawia znacznik <BR> na pocz▒tek $string. */
$string = ereg_replace("$","<BR>",$string);
/* Wstawia znacznik <BR> na koniec $string. */
$string = ereg_replace("\n","",$string);
/* Usuwa wszystkie znaki nowej linii w $string. */
ereg
ereg — dopasowanie wyra┐enia
regularnego
Opis
int ereg (string pattern, string string, array
[ regs]);
Przeszukuje string w celu dopasowania
wyra┐enia regularnego podanego w zmiennej pattern.
Je╢li uda siΩ dopasowaµ ujΩty w nawiasach podci▒g zmiennej pattern oraz funkcja jest przywo│ywana z trzecim
argumentem regs, dopasowany ci▒g zostanie
zapamiΩtany w elementach tablicy regs. $regs[1]
bΩdzie zawieraµ podci▒g zaczynaj▒cy siΩ od pierwszego lewego nawiasu; $regs[2]
zawieraµ bΩdzie podci▒g zaczynaj▒cy siΩ od drugiego lewego nawiasu itd. $regs[0]
bΩdzie zawieraµ kopiΩ zmiennej string.
Przeszukiwanie rozr≤┐nia wielko╢µ liter.
Zwraca true je╢li dopasowywany wzorzec znajduje siΩ w ci▒gu, lub false gdy
nie mo┐na dopasowaµ ci▒gu lub wyst▒pi│ b│▒d.
NastΩpuj▒cy przyk│adowy kod pobiera datΩ w formacie ISO (RRRR-MM-DD) i
drukuje j▒ w formacie DD.MM.RRRR:
Przyk│ad 1. Przyk│ad zastosowania ereg() if ( ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs ) ) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Niew│a╢ciwy format daty: $date";
}
Zobacz r≤wnie┐ eregi, ereg_replace, oraz eregi_replace.
Opis
string ereg_replace (string pattern, string
replacement, string string);
Funkcja przeszukuje zmienn▒ string w celu
dopasowania wzorca pattern, nastΩpnie zamienia
dopasowany tekst ci▒giem replacement.
Zwracany jest zmodyfikowany ci▒g. (Co mo┐e oznaczaµ, ┐e w przypadku gdy nic
nie mo┐na dopasowaµ, zwracany jest niezmieniony ci▒g)
Je╢li pattern zawiera podci▒gi ujΩte w
nawiasy, zmienna replacement mo┐e zawieraµ
podci▒g w postaci \\cyfry
n, kt≤ry zostanie zast▒piony przez tekst pasuj▒cy do n-tego
wyst▒pienia podci▒gu zapisanego w nawiasie; \\0 da w
wyniku ca│▒ zawarto╢µ ci▒gu. Mo┐na u┐yµ maksymalnie do dziewiΩciu podci▒g≤w.
Nawiasy mog▒ byµ zagnie┐d┐one, w takim przypadku zliczane s▒ nawiasy
otwieraj▒ce.
Je╢li nie mo┐na znale╝µ wzorca w zmiennej string, wtedy string
pozostanie niezmieniony.
Na przyk│ad nastΩpuj▒cy kod drukuje trzy razy ci▒g "To by│ test":
Przyk│ad 1. Przyk│ad zastosowania ereg_replace() $string = "To jest test";
echo ereg_replace( " jest", " by│", $string );
echo ereg_replace( "( )jest", "\\1by│", $string );
echo ereg_replace( "(( )jest)", "\\2by│", $string );
eregi
eregi — dopasowanie wyra┐enia
regularnego bez rozr≤┐niania wielko╢ci liter
Opis
int eregi (string pattern, string string, array
[ regs]);
Ta funkcja jest praktycznie identyczna z ereg opr≤cz
tego, ┐e nie rozr≤┐nia wielko╢ci liter.
Zobacz r≤wnie┐ ereg, ereg_replace, oraz eregi_replace.
eregi_replace
eregi_replace — zastΩpowanie z
u┐yciem wyra┐e± regularnych bez rozr≤┐niania wielko╢ci liter
Opis
string eregi_replace (string pattern, string
replacement, string string);
Ta funkcja jest praktycznie identyczna z ereg_replace
opr≤cz tego, ┐e nie rozr≤┐nia wielko╢ci liter.
Zobacz r≤wnie┐ ereg, eregi,
oraz ereg_replace.
Opis
array split (string pattern, string string, int
[ limit]);
Zwraca tablicΩ ci▒g≤w, z kt≤rych ka┐dy jest podci▒giem ci▒gu utworzonego
przez podzia│ na czΩsci wyznaczone przez wyra┐enie regularne pattern. W przypadku wyst▒pienia b│Ωdu, zwraca
false.
Przyk│ad jak uzyskaµ piΩµ pierwszych p≤l z pliku /etc/passwd:
Przyk│ad 1. Przyk│ad zastosowania split() $passwd_list = split( ":", $passwd_line, 5 );
Przetworzenie daty, kt≤rej pola mog▒ byµ przedzielone przez uko╢niki, kropki
lub my╢lniki:
Przyk│ad 2. Przyk│ad zastosowania split() $date = "04/30/1973"; // Delimiters may be slash, dot, or hyphen
list( $month, $day, $year ) = split( '[/.-]', $date );
echo "Month: $month; Day: $day; Year: $year<br>\n";
Uwaga: w zmiennej pattern rozr≤┐niana jest
wielko╢µ liter.
Zwr≤µ uwagΩ, ┐e je╢li nie wykorzystujesz potΩgi wyra┐e± regularnych szybsza w
dzia│aniu jest funkcja explode, kt≤re nie anga┐uje
zasoboch│onnego mechanizmu wyra┐e± regularnych.
Zwr≤µ uwagΩ, ┐e pattern jest wyra┐eniem
regularnym. Je╢li zajdzie potrzeba podzia│u │a±cucha w miejscach oznaczonych
znakami, kt≤re zgodnie z zasadami wyra┐e± regularnych s▒ znakami specjalnymi -
wtedy najpierw nale┐y przed tymi miejscami wstawiµ znaki unikowe ("\"). Je╢li
uwa┐asz, ┐e split (lub te┐ inne funkcje zwi▒zane z
regularnymi wyra┐eniami w tym przypadku) daje w wyniku co╢ dziwnego, przeczytaj
plik regex.7, umieszczony w podkatalogu regex/ dystrybucji PHP. Pliki te s▒ dostΩpne w formacie
manuala, wiΩc bΩdziesz musia│ u┐yµ polecenia w rodzaju man
/usr/local/src/regex/regex.7 aby je przeczytaµ.
Zobacz r≤wnie┐ explode i implode.
sql_regcase
sql_regcase — tworzenie wyra┐e±
regularnych dla dopasowa± bez rozr≤┐niania wielko╢ci liter
Opis
string sql_regcase (string string);
Zwracane jest poprawne wyra┐enie regularne kt≤rΩ bΩdzie dopasowywaµ string, nie zwracaj▒c uwagi na wielko╢µ liter.
Wyra┐enie te jest ci▒giem string w kt≤rym ka┐dy
znak jest zamieniany w wyra┐enie ujΩte w nawiasy kwadratowe; wyra┐enie te
zawiera wielkie i ma│e litery, lub sk│ada siΩ z powt≤rzonego oryginalnego znaku.
Przyk│ad 1. sql_regcase() example echo sql_regcase( "Foo bar" );
drukuje [Ff][Oo][Oo][ ][Bb][Aa][Rr] .
Wyra┐enie takie mo┐e byµ u┐yte by osi▒gn▒µ dopasowywanie bez rozr≤┐niania
wielko╢ci liter w wynikach, kt≤re wspieraj▒ tylko dopasowania z rozr≤┐nianiem
wielko╢ci liter.
|