21 ошибка программиста PHP. Часть 2 - Неоправданное использование регулярных выражений
ОГЛАВЛЕНИЕ
10. Неоправданное использование регулярных выражений
Регулярные выражения - мощный инструмент для поиска и организации данных, как, например, проверка адреса электронной почты на корректность или поиск URL. Но в то же время регулярные выражения работают медленнее других функций PHP, предназначенных для более простых задач.
Например, для перевода целой строки в заглавные буквы, новичок в PHP мог бы написать следующее:
<?php
$URL = "http://www.php.net";
$fp = @fopen ($URL, "r");
if (!$fp) {
die ("Сбой при открытии $URL!");
}
while ($line = @fgets ($fp, 1024)){
$data .= $line;
}
@fclose ($fp) or warn ("Сбой при закрытии дескриптора $URL");
$data = ereg_replace ("[a-z]", "[A-Z]", $data);
print $data;
?>
Однако, в этом случае, используя тяжеловесный и медленный ereg_replace(), он потратил бы кучу драгоценного времени выполнения на задачу, с которой более лёгкая функция strtoupper() справилась бы намного быстрее
$data = strtoupper ($data);
В общем, всегда следует искать более "лёгкую" замену регулярным выражениям, поскольку скорость выполнения вашего скрипта в таких случаях резко возрастает.
Эти функции должен знать каждый
Здесь будут перечислены несколько жизненно необходимых функций, сокращающих время выполнения вашего скрипта:
strtoupper(); strtolower(); ucfirst(); strtr(); str_replace(); trim(); explode(); implode(); substr(); strcmp()
При успешной замене замену регулярного выражения одной из этих функций вы можете рассчитывать на резкое повышение скорости, особенно если анализу подвергаются строки больших размеров.