Mailinglisten-Archive |
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