Следуя советам (правильный вариант):
$arr = array('file1.exe', 'file2.exe', 'file3.exe');
$text = 'File1: [count]3[/count] File2: [count]2[/count] File3: [count]1[/count]';
echo preg_replace_callback(
"/\[count\](.*?)\[\/count\]/",
function($match) use ($arr) {return $arr[$match[1]-1];},
$text
);
Старый вариант:
$arr = array('file1.exe', 'file2.exe', 'file3.exe');
$text = 'File1: [count]3[/count] File2: [count]2[/count] File3: [count]1[/count]';
preg_match_all("|\[count\](.*?)\[\/count\]|", $text, $tags);
foreach ($tags[0] as $key => $tag) {
$text = str_replace($tag, $arr[$tags[1][$key]-1], $text);
}
echo $text;
Вывод:
File1: file3.exe File2: file2.exe File3: file1.exe