Özel şablon çengel şey döngü

1 Cevap php

Ben şu anda formatında çalışan insanların e-posta için bir şablon sistemi inşa ediyorum:

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

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

Bu özel proje için yapının bu tür bir iç içe geçmiş bir dizi var:

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

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

<!-- .. --> daha sonra bir dizeye yüklenen bir HTML dosyası içine yerleştirilmiş olacaktır. Üst örnek ben verilerle yorum yerine olduğumu gösteriyor.

Ne PHP bunu yapmanın en iyi yolu olurdu? Ben diziler aracılığıyla döngü sandım ama sonra sadece düşünce benim rotayı kaybetti ve ne yaptığını kayboldu!

All help would be appreciated!! Thanks

1 Cevap

Eh, eval kullanarak tehlikeli, ancak sizin tarafınızdan olsa tüm kod koştu eğer, bu zarar vermez. Bu deneyebilirsiniz:

<?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";
}
}

?>

Oldukça garip bir yol, ama ben herhangi bir net çözemedim.