Разница между strreplace и pregreplace при работе с массивами заключается в том, что каждая из этих функций имеет свои особенности:
- str_replace обрабатывает массив последовательно, а не параллельно. www.linux.org.ru Например, если в массиве поиска 20 элементов, текст будет просмотрен 20 раз. www.linux.org.ru
- preg_replace строит конечный автомат, и если для поиска/замены достаточно одного регулярного выражения, то будет сделан всего лишь один просмотр текста. www.linux.org.ru При этом все позиции для замены известны заранее, поэтому замена тривиальна. www.linux.org.ru
Кроме того, strreplace заменяет конкретное вхождение строки, а pregreplace выполняет сопоставление с регулярным выражением. stackoverflow.com