W tym artykule zajmiemy się często używanymi wyrażeniami regularnymi. Nie będe pisał jak się je tworzy, po prostu tu będe umieszczał wszystkie, z których ja korzystam. Przydadzą się na pewno one do walidacji formularzy, ale i nie tylko dodam także kilka, dzięki, którym będzie można wyjąc jakieś dane ze stron.
W PHP 5 posiadamy kilka metod, które pozwalają nam na używanie wyrażeń regularnych, ja w przykładach będe używał tylko tych najpopularniejszych, czyli preg_match, preg_match_all, preg_replace, preg_replace_callback.
preg_match - funkcja pozwala na przyrównanie ciągu znaków do wzorca, pierwszy argument to wzorzec, drugi zaś ciąg znaków. Posiada ona dwa opcjonalne parametry, ale są one nam zbędne, dlatego jeżeli komuś nie wystraczają podstawowe, odsyłam do dokumentacji. Funckja zwraca nam logiczne false w przypadku błędu lub ilość powtórzeń.preg_match_all - funkcja pozwala nam na wyciągnięcie z ciągu znaków wszystkich powtórzeń danego wzorca. Pierwszy argument to wzorzec, drugi przeszukiwany ciąg znaków, natomiast trzeci to zmienna w której będa przechowywane wyniki. Funkcja zwraca nam logiczne false w przypadku błędu lub ilość znalezionych powtórzeń. Dokumentacja.preg_replace - funkcja wyszukuje wzorzec(pierwszy argument) w zadanym ciągu znaków(trzeci argument) i zastępuje go wzorcem z drugiego argumentu. Funkcja w razie poprawnego wykonania zwraca nam zmieniony tekst lub w przypadku błędu niezmieniony lub typ pusty - null.Dokumentacja.preg_replace_callback - funkcja działa podobnie do preg_replace z tą różnicą, że w przypadku znalezienia powtórzenia wzorca całą operacje podmiany przekazuje funkcji, która jest podawana jako drugi argument. DokumentacjaWszystkie funkcje przyjmują również inne dodatkowe parametry, które jednak będa nam zbędne do przykładów.
#^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$#i, przykład:
<?php
$ciag='masiakla@domena.pl';
if(preg_match('#^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$#i',$ciag) {
echo 'poprawny';
} else {
echo 'niepoprawny';
}
?>#(https?)://(([a-z0-9-]+\.)+[a-z]{2,6}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:[0-9]+)?(/?|/\S+)#Uix, przykład:
<?php
$ciag='sadas sadasd <a href="http://www.mephir.net.pl" title="http://www.mephir.net.pl">http://www.mephir.net.pl</a> sdas sadas sd asd';
if(preg_match_all('#(https?)://(([a-z0-9-]+\.)+[a-z]{2,6}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:[0-9]+)?(/?|/\S+)#Uix',$ciag, $match) {
print_r($match);
}
?>#^[\d]{3}-[\d]{2}-[\d]{2}-[\d]{3}$#, przykład:
<?php
$ciag='4992-1-65-123';
if(preg_match('#^[\d]{3}-[\d]{2}-[\d]{2}-[\d]{3}$#',$ciag) {
echo 'poprawny';
} else {
echo 'niepoprawny';
}
?>#[\d]{3}-[\d]{4}-[\d]{3}#, przykład:
<?php
$ciag='asfdadsfafsafsad 094-3166-189 sad 094-316-61-89 sadf cvcx 094-3166-189 bcxb';
echo preg_replace('#([\d]{3}-[\d]{4}-[\d]{3})#','<b>$1</b>',$ciag);
?>#\[[b|u|i]{1}](.+)\[/[b|u|i]]#is, przykład:
<?php
$ciag='to jest przykładowy tekst z użyciem [b]bbcode[/b], możemy w nim [b]pogrubiać[/b], [i]przechylać[/i], [u]podkreślać[/u] oraz łączyć [u][i][b]wszystkie tagi[/b][/i][/u]';
function parse_bbc($wejscie){
if(is_array($wejscie)){
$wyjscie=preg_replace("#\[([b|u|i]{1})](.+)\[/[b|u|i]]#is","<$1>$2</$1>",$wejscie[0]);
}
return preg_replace_callback("#\[([b|u|i]{1})](.+)\[/[b|u|i]]#is",'parse_bbc',$wyjscie);
}
echo parse_bbc($ciag);
?>
Dzięx za wyszukiwanie adr.
Dzięx za wyszukiwanie adr. www.
red. Janusz Micach
Dodaj nową odpowiedź