phpbar.de logo

Mailinglisten-Archive

[php] Template Replace a la Smarty für RTF

[php] Template Replace a la Smarty für RTF

Yannik Hampe yannik at cipher-code.de
Mit Mar 26 13:27:26 CET 2008



Michael Borchers wrote:
> Klingt schlimmer als es ist:)
> 
> Ich habe eine RTF File mit Platzhalter wie in Smarty {$mailing.name}.
> 
> Nun möchte ich alle Platzhalter im RTF finden und mit den Spaltern aus der DB ersetzen.
> 
> z.B.:
> DB: 'name' = 'Mr. Foo'
> 
> -> {$mailing.name}    => 'Mr.Foo';
> 
> Es können beliebig viele Platzhalter werden und die DB Spalten sind nicht bekannt.
> 
> Gibt es da ne schnell explode oder replace Lösung?!

Ich denke mal $mailing sieht so aus:
array
(
   'spalte1' => 'wert1',
   ...
)
wie das bei so DB Ergebnissen eben so der Fall ist. Dann machst du einmal:
$search =array_keys($mailing);
foreach($search as &$v) $v ='{$mailing.'.$v.'}';
$replace =array_values($mailing);

Dann hast du 2 arrays:
$search:
Array
(
     [0] => {$mailing.spalte1}
     [1] => {$mailing.spalte2}
)

$replace:
Array
(
     [0] => wert1
     [1] => wert2
)

Und das kannst du dann einfach auf deine Datei loslassen:
$neu =str_replace($search, $replace, $alt);
wobei $alt der inhalt deiner RTF-Datei ist.

Wenn in RTF $ oder { oder sonstwas irgendwie escapt werden muss, musst 
du das natürlich hier auch tun. Schau dir die rtf-Datei eben mal in 'nem 
(Hex-)editor an.

Yannik

php::bar PHP Wiki   -   Listenarchive