$ali = preg_match('<head>([^<]+)</head>~',$ali, $eslesmeler) ? $eslesmeler[1] : '-';
print $ali ;//<head>ile</head> arasındaki yazıyı çeker bulamassa - yazar
([^<]+) kullanımız yanlış.
(.*?) kullanmalısınız. Çünkü; <head> </head> arasında birçok etiket var. Ve bunlarda da
< karakteri var. Ve, ilk bulduğu zaman eşleştirmeyi durduracaktır.
bilemiyorum, halâ şüpheliyim, bana göre veri çekmez..
Gülüyorum...

"match" kelimesi farkındaysanız
preg_match_allda da var. (:
Bu arada, yukarıda kod vermiştim zaten ben.