[: Adı Emlakçı] veya [ofis: telefon] I şeklinde bir dize içeren html ve "etiketleri" var. Ben emlakçının adı $ veri ['Emlakçı'] ['name'] ve $ verilere ofis telefon bulunabilir böyle veritabanı veri (CakePHP oluşturulan) dizi ['Ofis'] ['telefon' var ].
Ben yapmak istiyorum bulmak ve değiştirme muhtemelen preg_replace_callback kullanarak, doğru verilerle her bir etiketi yerine, dize. Ben bir acemi, biraz olsa da, bu yüzden bu bende yakın değilim, ve bunu gülünç yavaş ve verimsiz eminim:
function template_swap($html, $data) {
preg_match_all('/\[(.*):(.*)\]/', $html, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
if (isset( $data[ ucfirst($match[1]) ] )) {
if (array_key_exists( $match[2], $data[ ucfirst($match[1]) ] )) {
$html = str_replace(
$match[0],
$data[ ucfirst($match[1]) ][ $match[2] ],
$html
);
}
}
}
return html;
}
Herkes bu halletmek için daha iyi yollar üzerinde bazı fikirleri ile bana yardımcı olabilir misiniz?