1

[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;
}

これを実現するためのより良い方法について、誰かが私を助けてくれますか?

4

1 に答える 1

0
/\[\s*\'([^\']*)\'\s*\]\s*:\s*\[\s*\'([^\']*)\'\s*\]/
于 2010-11-10T21:48:24.313 に答える