Цикл через пользовательский шаблон зацепления вещь - PullRequest
0 голосов
/ 01 мая 2010

Я создаю систему шаблонов для электронной почты людей, которая в настоящее время работает в формате:

$array['key1'] = "text";
$array['key2'] = "more text";

<!--key1--> // replaced with *text*
<!--key2--> // replaced with *more text*

Для этого конкретного проекта у меня есть вложенный массив с такой структурой:

$array['object1']['nest1']['key1'] = "text";
$array['object2']['next1']['key1'] = "more text";

<!--[object1][nest1][key1]--> // replaced with *text*
<!--[object2][nest1][key1]--> // replaced with *more text*

<!-- .. --> будет помещен в файл HTML, который затем загружается в строку. Верхний пример показывает, что я заменяю комментарии данными.

Каков наилучший способ сделать это в PHP? Я думал, что смогу пройтись по массивам, но потом я просто потерял след мысли и заблудился в том, что я делал!

Вся помощь будет оценена !! Спасибо

1 Ответ

1 голос
/ 01 мая 2010

Что ж, использование eval опасно, но если весь код выполняется, хотя он у вас, это не повредит. Вы можете попробовать это:

<?php

$array['object1']['nest1']['key1'] = "text";
$array['object2']['nest1']['key1'] = "more text";

$str = "sadfadsfjäadsföljadsölf
<!-- ['object2']['nest1']['key1'] -->
asdföadsjlf";

$split = explode('
',$str); // This sucks, you can use \n to detect line-breaks. Doesn't work that way in this example

foreach($split as $key => $value) {
    if(preg_match('/\<\!\-\- (\[.+\]) \-\-\>/e',$value,$matches)) {
    eval("echo \$array".$matches[1].";");
    echo "\n";
} else {
    echo $value."\n";
}
}

?>

Довольно странно, но я не мог придумать ничего более ясного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...