עשה טובה, אל תסבך את עצמך עם preg, תחזור לstr עד שתלמד PCRE, זה נושא ממש מתקדם ולא הייתי ממליץ להתחיל עכשיו
עליתי על הבאג שלך.. מה שקרה זה, שהפונקצייה file נותנת מערך של כל שורה, ובעצם נוצר מצב שיש מערך במקום מה שרצית..
תעשה עכשיו לדוגמא
PHP קוד:
$bbb = file ('bla.tpl');
$bla = str_replace ("<aa>", "<hr>", $bbb)
foreach ($bla as $val) echo "{$val}\n";//אם בא לך תחליף את הסוף בבי אר או משהו