Regulāro izteiksmju optimizācija PHP
Regulārās izteiksmes ir ļoti smags un salīdzinoši lēni strādājošs rīks. Kad ir alternatīvs risinājums, vēlams izmantot tieši to.
Apskatīsim piemēru. Pieņemsim, ka mums ir jāpārbauda, vai kāda virkne sākas ar izsaukuma zīmi. Kāds programmētājs šo problēmu atrisināja ar regulāro izteiksmi:
<?php
if (preg_match('#^!#', $str)) {
echo 'jā';
} else {
echo 'nē';
}
?>
Tomēr, šai problēmai ir daudz ātrāks risinājums:
<?php
if ($str[0] == '!') {
echo 'jā';
} else {
echo 'nē';
}
?>
Regulārās izteiksmes ir ļoti smags un salīdzinoši lēni strādājošs rīks. Vienmēr, kur ir alternatīvs risinājums, vēlams izmantot tieši to.
Nākamajā kodā kāds programmētājs pārbauda,
vai virknē ir apakšvirkne '333'.
Optimizējiet šī programmētāja risinājumu.
Lūk, kods:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo 'ir';
} else {
echo 'nav';
}
?>
Nākamajā kodā kāds programmētājs pārbauda,
vai virkne beidzas ar .html.
Optimizējiet šī programmētāja risinājumu.
Lūk, kods:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'jā';
} else {
echo 'nē';
}
?>
Uzrakstiet kodu, kas pārbaudīs, vai virkne beidzas
ar .png vai ar .jpg.