iltu33 adlı üyeden alıntı: mesajı görüntüle
Hocam süpersin ya. Tam mantığını anlatabilir misin?
preg_match_all('/<h[1-6]>(.*?)<\/h[1-6]>/', $content, $cikti);
Bu kısmında $cikti match olan tüm sonucu döndürmekte. Örneğin h1 buldu ise $cikti[0] da "<h1>h1_icerik</h1>", $cikti[1] de ise "h1_icerik" şeklinde aynı keye bağlı array döndürmekte.
Görsel olarak aşağıda ki gibi
Array
(
    [0] => Array
        (
            [0] => <h1>h1_icerik </h1>
            [1] => <h2>h2</h2>
            [2] => <h3>h3</h3>
            [3] => <h4>h4</h4>
            [4] => <h5>h5</h5>
            [5] => <h6>h6</h6>
        )

    [1] => Array
        (
            [0] => h1_icerik 
            [1] => h2
            [2] => h3
            [3] => h4
            [4] => h5
            [5] => h6
        )

)

Sonrasında foreach e $cikti[0] ı sokuyoruz 'key' ile. Döngüde o anki key verinin hem ham halini hem de içerik halini bulmamız için lüzumlu.
Döngüde elimizde key dahil 3 veri oluyor
$cikti[0][$key] = <h1>h1_icerik</h1>
$cikti[1][$key] = h1_icerik

Geri kalan içlem replace ile değişikliği yapmak. "<h1>h1_icerik</h1>($cikti[0][$key] ) içeriği bulup <h1 id="h1_icerik($cikti[1][$key] )">h1_icerik($cikti[1][$key] )</h1>" ile değiştirmek.