preg_replace ve highlight_string
php kodlarını renklendirmeye çalışırken farkettim ki preg_replace içinde highlight_string kullanamıyormuşuz. peki o zaman ne yapacağız? işte burada devreye preg_replace_callback fonksiyonu giriyor.

örneklerle açıklayacak olursam:

normal şartlarda aklınıza ilk gelecek kod şu olacaktır.


<?php

$string '
<?php
    $foo = "bar";
    echo $foo;
?>
';

$string preg_replace("'\<\?php(.*)\?\>'imxsU"highlight_string("\\1"), $string);

echo $string;

?>



ekran çıktısı:

\1

gördüğünüz gibi ekrana renklendirilmiş kodumuzu değil renklendirilmiş \1 değerini basıyor.

çözüm için preg_replace_callback kullanmamız gerekiyor. öncelikle renklendirme için bir fonksiyon tanımlıyoruz:


<?php

function highlight($matches)
{
    return highlight_string($matches[0], true);
}

$string '
<?php
    $foo = "bar";
    echo $foo;
?>
';

$string preg_replace_callback("'\<\?php(.*)\?\>'imxsU""highlight"$string);

echo $string;

?>



çıktısı:


<?php
    $foo "bar";
    echo $foo;
?>



Ad Soyad:
E-posta:
Web site:
şuralara da bakın derim

Burak İlem

Ali Yılmaz