Sileri:
Выдает пустой массив
Вся фишка тут в квантификаторе:
* подразумевает, что не требуется ни один символ, может совпасть сколько угодно символов. Механизм останавливается прямо на первом условии и не требует ни одного символа! Поставь ему вместо * плюсик + и все заработает!
<?
preg_match_all("/(?<=<h1>\\).+(?=<\\\\/h1>\\)/", $file, $matches);
?>
Механизм совпадения увидит плюсик (должен совпасть минимум один символ), и начинает искать минимум один, а потом он становится жадным и ищет все символы.