[realtor:name] または [office:phone] の形式で、html と「タグ」を含む文字列があります。不動産業者の名前が $data['Realtor']['name'] にあり、オフィスの電話が $data['Office']['phone' にあるような (CakePHP で生成された) データベース データの配列があります。 ]。
おそらく preg_replace_callback を使用して、各タグを正しいデータに置き換えて、文字列に対して検索と置換を実行したいと考えています。ただし、私は少し初心者なので、これは私が持っている最も近いものであり、途方もなく遅く、非効率的であると確信しています:
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;
}
これを実現するためのより良い方法について、誰かが私を助けてくれますか?