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