php aracılığıyla RTF şablonları ayrıştırma

0 Cevap php

I (mysql) veritabanı satır başına bir sayfa içeren yeni bir RTF belgesi oluşturmak için şablon olarak bir RTF dosyası kullanmaya çalışıyorum.

Benim yöntem hemen hemen oluşturulan dosya ilk satırda sadece bir sayfa, ve her satır için değil bir sayfa içermesi dışında çalışır. (Benim test 2 sayfa olmalıdır).

Burada ana döngü olduğunu.

$today= date('d-m-Y');
$tp= new templateParser(LOCALADMIN.'_documents/fiche_individuelle.rtf');

foreach($inscriptions as $person) {
    $tags= array('FIRSTNAME'=>$person['firstname'],
            'LASTNAME'=>$person['lastname'],
            'BIRTHDATE'=>$person['birthdate'],
            'TELEPHONE1'=>$person['mobile_phone'],
            'MEDICALBACKGROUND'=>$person['medical_background'],
            'ALLERGIES'=>$person['allergies']
    );

    $tp->parseTemplate($tags);
    $content .= $tp->display();

    $content .= "\\section\n";
    //END foreach
}
// create RTF Document

    $today= date('d-m-Y-hms');
    $filename = $season_name.'_'.$today.'.rtf';

    header('Content-type: application/msword');
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");
    header("content-disposition: attachment; filename=\"$filename\"");
    print $content;
    exit;

Tam olmak uğruna, burada benim basit bir şablon sınıfı kodu:

class templateParser {
    // member definition
    var $output;
    var $log;
    var $replacedTags;

    function templateParser($templateFile = 'default_template.htm')
    {
        // constructor setting up class initialization
        $this->log .= "templateParser() called<br />";
        if (file_exists($templateFile)) {
            $this->log .= 'Found template file ' . $templateFile . '<br/>';
            $this->output = file_get_contents($templateFile);
        } else {
            $this->log .= 'Error:Template file ' . $templateFile . ' not found';
            return false;
        }
    }

    function parseTemplate($tags = array())
    {
        $this->log = 'parseTemplate()  called. <br/>';
        // code for parsing template files
        if (count($tags) > 0) {
            foreach($tags as $tag => $data) {
                $data = (file_exists($data))? $this->parseFile($data) : $data;
                $this->output = str_replace('%' . $tag . '%', $data, $this->output);
                $this->log .= 'parseTemplate() replaced <b>' . $tag . '</b> in template<br/>';
                $this->replacedTags ++;
            }
        } else {
            $this->log .= 'WARNING: No tags were provided for replacement<br/>';
        }
        return $this->replacedTags;
    }

    function parseFile($file)
    {
        $this->log .= 'parseFile()  called. <br/>';
        ob_start();
        include($file);
        $content = ob_get_contents();
        ob_end_clean();
        return $content;
    }

    function display()
    {
        // code for displaying the finished parsed page
        return $this->output;
    }
}

0 Cevap