Selco Cod
Selco Cod

Yazılım ve güvenlik üzerine makaleler yazan günümüz teknolojisini yakından takip eden sıradan birisi...

Twitter


PHP ile Metin Şablonlarını Düzeltme

Bu tür metin sablonlari genellikle e-posta, fatura veya kullanici kayit oldugunda gönderilen sablonlardir. Her kullanici icin bir adet sablon olusturamayacagimiza göre bunun yerine degistirilecek kisimlari belli kisimlari olan bir sablon olmasi ve kisiye göre icerigi degistirilebilen bir kismi. Örnek bir sablon ise su olsun mesela.
<?php
$sablon = "
    Sayin {{musteri_adi}}

    {{tutar}} TRY tutar olan faturanızı ödediğiniz için teşekkür ederiz..
    Hizmet kullanımına devam edebilirsiniz.

    Saygılarımızla
    XXXX Online Store
";
?>
Bu sablonun üstünde degistirilecek kisimlar belli aslinda ,cift parentez ile bunu belirledik simdi buna bir uygun fonksiyon ile belirlenen kisimlari olusturdugumuz dizi ile tek tek yerine koyacagiz. Bunun icin pratik bir fonksiyon ben daha önce yazmistim ve bütün scriptlerimde kullaniyorum acikcasi. Özellikle e-ticaret scriptleri icin tamamen yeterli bir fonksiyondur.
<?php
function sablonuDuzelt($sablon, $degistirilecekler)
{
    return preg_replace_callback('/{{(.+?)}}/', function($karsilastir) use ($degistirilecekler)
    {
        return $degistirilecekler[$karsilastir[1]];
    }, $sablon);
}
?>
Simdi bu fonksiyonumuz aslinda cok basit calismaktadir. Gelen veriyi ve degistirilecek kisimlar ile karsilastirip cift köseli parantez icindeki degerleri dizideki deger ile karsilastirip isim uyuyorsa dizideki degerini alip oraya yazmaktadir. Kendisi kücük ama islevi büyük aslinda. Simdi buna uyan bir örnek yazalim.
<?php
$sablon = "
    Sayin {{musteri_adi}}

    {{tutar}} TRY tutar olan faturanızı ödediğiniz için teşekkür ederiz..
    Hizmet kullanımına devam edebilirsiniz.

    Saygılarımızla
    Xxxx Online Store
";


$dizi = array(
    'musteri_adi' => 'Selcuk',
    'tutar' => 500,
);

function sablonuDuzelt($sablon, $degistirilecekler)
{
    return preg_replace_callback('/{{(.+?)}}/', function($karsilastir) use ($degistirilecekler)
    {
        return $degistirilecekler[$karsilastir[1]];
    }, $sablon);
}

echo sablonuDuzelt($sablon, $dizi);
/*
Cikti: Sayin Selcuk
500 TRY tutar olan faturanızı ödediğiniz için teşekkür ederiz.. 
Hizmet kullanımına devam edebilirsiniz. 

Saygılarımızla 
Xxxx Online Store
*/
?>
Aslinda bu yaptigim fonksiyonu Mustache template sinifina benzer yapmistim. Isteyenler bunun daha gelismis olan bu sinifi kullanabilir.


Yazı Hakkında Yorumlar