Na tej lekcji zajmiemy siΩ │a±cuchami znak≤w. Sprawne operowanie na danych tego typu jest krokiem do sukcesu w programowaniu PHP. ZachwilΩ opiszΩ szereg bardzo u┐ytecznych funkcji zwi▒zanych z tym tematem. Poniewa┐ w gruncie rzeczy u┐ywanie ich jest proste i intuicyjne, nie bΩdΩ podawa│ konkretnych przyk│ad≤w i opiszΩ je w punktach, jeden pod drugim.
<html>
<head>
<title>Leksemy</title>
</head>
<body>
<?
$linia="[BHP] BinboyHomePage!Autor: Karol ";
$linia.="Wierzcho│owski!webmaster, programista";
echo "Tekst: <b>$linia</b><br><br>";
for ($napis=strtok($linia,"!");$napis!="";$napis=strtok("!"))
{
echo "Linia: <b>$napis</b><br>";
}
?>
</body>
</html>
Teraz jeszcze kr≤tko o wyra┐eniach regularnych. ╙w wyra┐enia s│u┐▒ do testowania zawarto╢ci │a±cuch≤w. Sk│adaj▒ siΩ z jednej b▒d╝ kilku podczΩ╢ci oddzielonych znakiem | (pionowa kreska) - co oznacza sumΩ, czyli alternatywΩ wyra┐e±. Dana cz▒stka sk│ada siΩ z liter i specjalnych symboli. No i tak:
TrochΩ tego du┐o, ale tak naprawdΩ to jest jeszcze wiΩcej ;) Je╢li w danym wyra┐eniu regularnym chcieliby╢my u┐yµ jakiego╢ znaku specjalnego, ale by nie dzia│a│ jako specjalny, to musimy poprzedziµ go znakiem \. Dan▒ liczbΩ znak≤w mo┐na rownie┐ umie╢ciµ w nawiasach kwadratowych i w≤wczas okre╢la ona listΩ dopuszczalnych znak≤w. Je╢li tak▒ listΩ poprzedzimy znakiem ^ to oznacza, ┐e nie mo┐e wyst▒piµ dany znak. Mo┐na r≤wniez u┐ywaµ tzw. klas znak≤w. Je╢li chcieliby╢my wypisaµ dopuszczaln▒ liczbΩ znak≤w - wszystkie litery alfabetu - to w≤wczas w│a╢cie u┐ywamy klas znak≤w.
Podajmy trochΩ przyk│ad≤w: [po lewej wyra┐enie, po prawej dopuszczalne ci▒gi
a*bcd - bcd, abcd, aabcd, aaabcd a+bcd - abc, aabcd, aaabcd a?bcd - abcd, bcd kar.l - karol, karel, kar1l, korul ^a.* - dowony │a±cuch na literΩ "a" [abc]*a$ - dowolny │a±cych sk│adaj▒cy siΩ z liter abc i ko±cz▒cy na "a" k[0-9]x - k0x, k1x, k2x...k9x
Teraz przyk│ad z wykorzystaniem funkcji regularnych.
<html>
<head>
<title>Wyra┐enia regularne</title>
</head>
<body>
<?
# kod pocztowy: xx-xxx
$kod1="12-100";
$kod2="123-100";
if (ereg("^([0-9]{2})-([0-9]{3})$",$kod1))
echo "$kod1 - jest poprawny<br>";
else echo "$kod1 - nie jest poprawny<br>";
if (ereg("^([0-9]{2})-([0-9]{3})$",$kod2))
echo "$kod2 - jest poprawny<br>";
else echo "$kod2 - nie jest poprawny<br>";
echo "<br>";
$tekst="AAAaaa111aaaAAA";
$tekst2=ereg_replace("1","2",$tekst);
echo "Tekst1: ".$tekst."<br>Tekst2: ".$tekst2."<br>";
?>
</body>
</html>