Säännöllisten lausekkeiden optimointi PHP:ssä
Säännölliset lausekkeet ovat erittäin raskas ja suhteellisen hitaasti toimiva asia. Kun on olemassa vaihtoehtoinen ratkaisu, on toivottavaa käyttää juuri sitä.
Katsotaan esimerkkiä. Oletetaan, että meidän on tarkistettava, alkaako jokin merkkijono huutomerkillä. Eräs ohjelmoija ratkaisi tämän tehtävän säännöllisellä lausekkeella:
<?php
if (preg_match('#^!#', $str)) {
echo 'kyllä';
} else {
echo 'ei';
}
?>
Kuitenkin tällaisella tehtävällä on paljon nopeammin toimiva ratkaisu:
<?php
if ($str[0] == '!') {
echo 'kyllä';
} else {
echo 'ei';
}
?>
Säännölliset lausekkeet ovat erittäin raskas ja suhteellisen hitaasti toimiva asia. Aina, kun on olemassa vaihtoehtoinen ratkaisu, on toivottavaa käyttää juuri sitä.
Seuraavassa koodissa eräs ohjelmoija tarkistaa,
onko merkkijonossa osajonoa '333'.
Optimoi tämän ohjelmoijan ratkaisu.
Tässä on koodi:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo 'on';
} else {
echo 'ei';
}
?>
Seuraavassa koodissa eräs ohjelmoija tarkistaa,
päättyykö merkkijono päätteeseen .html.
Optimoi tämän ohjelmoijan ratkaisu.
Tässä on koodi:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'kyllä';
} else {
echo 'ei';
}
?>
Kirjoita koodi, joka tarkistaa, päättyykö
merkkijono päätteeseen .png tai .jpg.