Попасть в мою голову с Preg - PullRequest
1 голос
/ 11 ноября 2010

У меня есть строка, содержащая html и «теги» в форме [realtor: name] или [office: phone]. У меня есть (сгенерированный CakePHP) массив данных базы данных, так что имя риэлтора можно найти в $ data ['Realtor'] ['name'], а рабочий телефон в $ data ['Office'] ['phone' ].

Я хочу выполнить поиск и замену строки, заменив каждый тег правильными данными, возможно, используя 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;
}

Может кто-нибудь помочь мне с некоторыми идеями о лучших способах сделать это?

1 Ответ

0 голосов
/ 11 ноября 2010
/\[\s*\'([^\']*)\'\s*\]\s*:\s*\[\s*\'([^\']*)\'\s*\]/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...