1. На странице можно отдавать не сразу все фото а частями, допустим по 15 (LIMIT 0, 15) на страницу и сделать нумерацию страниц (pagination). Уже функция вызовется не 100 раз.
2. Обратите внимание на функцию
array_walk() . Уже не придется писать цикл.
Откажитесь от регулярных выражений. Посмотрите в сторону
строковых функций. Выбирайте.
Цитата из документации:
"Если вам не нужна мощь регулярных выражений, вы можете выбрать более быстрые (хоть и простые) альтернативы наподобие explode() или str_split()."
split() c версии PHP 5.3.0 считается устаревшей.
explode() таковой не считается.
К слову в движках, фреймворках вызов 2000 функций - не предел.