$yazi = preg_replace("#<div id='div1'>.*</div>#si", "<div id='divyeni'></div>", $yazi);dener misiniz?
Bu şekilde iki sebepten dolayı çalışmaz.
1. Sona koyduğunuz div sayfanın en sonundaki div ile,
2. En başa koyduğunuz <div id='div1'> de sayfanın en başındaki ile eşleşir, sayfanın büyük bir çoğunluğunu kaybetmiş olursunuz.
Ek olarak content bölümünün içerisinde de div'ler yer alabilir. Yani belirsiz sayıda div var kodunuzda.
Bunu en kolay dom parserlar ile yapabilirsiniz, ancak dom parser'dan kodunuz çıktığında kodlar tamamiyle değişmiş olur, kod geri çekilmek istendiğinde parser kodu yeniden üretir.
Recursive bir regex yazılması gerekiyor, bu nasıl yazılabilir ben de araştırıyorum, bilmiyorum.