Optymalizacja wykorzystania wyrażeń regularnych w PHP
Wyrażenia regularne są bardzo ciężkie i stosunkowo wolno działające. Gdy istnieje alternatywne rozwiązanie, warto korzystać właśnie z niego.
Spójrzmy na przykład. Załóżmy, że musimy sprawdzić, czy pewien ciąg znaków zaczyna się od wykrzyknika. Pewien programista rozwiązał to zadanie za pomocą wyrażenia regularnego:
<?php
if (preg_match('#^!#', $str)) {
echo 'tak';
} else {
echo 'nie';
}
?>
Jednakże, to zadanie ma znacznie szybciej działające rozwiązanie:
<?php
if ($str[0] == '!') {
echo 'tak';
} else {
echo 'nie';
}
?>
Wyrażenia regularne są bardzo ciężkie i stosunkowo wolno działające. Zawsze, gdy istnieje alternatywne rozwiązanie, warto korzystać właśnie z niego.
W następnym kodzie pewien programista sprawdza,
czy w ciągu znaków znajduje się podciąg '333'.
Zoptymalizuj rozwiązanie tego programisty.
Oto kod:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo 'jest';
} else {
echo 'nie ma';
}
?>
W następnym kodzie pewien programista sprawdza,
czy ciąg znaków kończy się na .html.
Zoptymalizuj rozwiązanie tego programisty.
Oto kod:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'tak';
} else {
echo 'nie';
}
?>
Napisz kod, który sprawdzi, czy ciąg znaków kończy się
na .png lub na .jpg.