От автора: нужно из PHP убрать регулярное выражение! Долой господство regular expressions! Да здравствует… Вот видите, а заменить то нечем!
Только за!
Я тоже предлагаю избавиться от регулярок. Ох, как они мне надоели! Только нужно найти достойную замену. Когда найдется, «свистните»! А мы пока поговорим о главном недостатке регулярных – скорости обработке.
Считаю, что иногда можно обойтись без регулярок. Чаще всего при операциях со строками. Ведь в PHP для этого имеется множество специализированных функций, которые работают намного быстрее. Это и есть тот случай, когда можно из PHP удалить регулярное выражение.
Доказательство!
Для измерения используем функцию microtime(). Сначала узнаем, сколько займет времени операция поиска и замены слова в строке с помощью функции str_replace():
1 2 3 4 5 6 7 8 9 |
<?php $begin = microtime(true); $m = "Меньше слов, а больше business!"; $stroka = str_replace("business","<b>дела</b>",$m); echo $stroka."<br />"; $time=round(microtime(true) - $begin,5); echo "Скрипт выполнился за: ".$time." сек."; ?> |
Теперь выясним, стоит ли из PHP убирать регулярные выражения. Измерим время проведения той же операции с помощью регулярки.
1 2 3 4 5 6 7 8 9 |
<?php $begin = microtime(true); $text = "Меньше слов, а больше business!"; $str = preg_replace("/b.....ss/","дела", $text); echo $str."<br />"; $time1=round(microtime(true) - $begin,5); echo "Время выполнения скрипта: ".$time1." сек."; ?> |
Разница вроде бы и несущественная, но это только при обработке одной строки. А если нужно осуществить поиск по большому массиву данных? Тогда эта разница станет столь чувствительной, что может негативно отразиться на производительности всего ресурса.
В общем, ответ прост: из PHP удалять регулярные выражения еще рано, но иногда можно обходиться и без них. Главное знать, когда!