რეგულარული გამონათქვამების ოპტიმიზაცია PHP-ში
რეგულარული გამონათქვამები ძალიან მძიმე და შედარებით ნელად მომუშავე რამაა. როდესაც არსებობს ალტერნატიული გადაწყვეტა, სასურველია გამოიყენოთ ზუსტად ის.
შევხედოთ მაგალითს. დავუშვათ, ჩვენ გვჭირდება შევამოწმოთ, იწყება თუ არა გარკვეული სტრიქონი ძახილის ნიშნით. რაღაც პროგრამისტმა ეს ამოცანა რეგულარული გამონათქვამის საშუალებით გადაწყვიტა:
<?php
if (preg_match('#^!#', $str)) {
echo 'კი';
} else {
echo 'არა';
}
?>
თუმცა, ასეთი ამოცანის გადაწყვეტა ბევრად უფრო სწრაფად მომუშავე გზითაც არსებობს:
<?php
if ($str[0] == '!') {
echo 'კი';
} else {
echo 'არა';
}
?>
რეგულარული გამონათქვამები ძალიან მძიმე და შედარებით ნელად მომუშავე რამაა. ყოველთვის, სადაც არსებობს ალტერნატიული გადაწყვეტა, სასურველია გამოიყენოთ ზუსტად ის.
შემდეგ კოდში რაღაც პროგრამისტი ამოწმებს,
არის თუ არა სტრიქონში '333' ქვესტრიქონი.
ოპტიმიზაცია გაუკეთეთ ამ პროგრამისტის გადაწყვეტას.
აი კოდი:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo 'არის';
} else {
echo 'არა';
}
?>
შემდეგ კოდში რაღაც პროგრამისტი ამოწმებს,
მთავრდება თუ არა სტრიქონი .html-ზე.
ოპტიმიზაცია გაუკეთეთ ამ პროგრამისტის გადაწყვეტას.
აი კოდი:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'კი';
} else {
echo 'არა';
}
?>
დაწერეთ კოდი, რომელიც შეამოწმებს, მთავრდება თუ არა
სტრიქონი .png-ზე ან .jpg-ზე.