A veces necesito hacer cosas en mi plantilla como:
Código :
<p class="error"> {error} </p>y asignarle los errores a una variable de plantilla "error" en caso de que se consigan. Pero, ¿y si no se envian errores? Me gustaría que tampoco se imprima el <p class="error"></p> vacío; sin tener que para ello hacer esto:
Código :
<?php
$plantilla->asignarVariable('error','<p class="error">SE ENCONTRO UN ERROR</p>');
?>
por esto, jugando un poco hice unos delimitadores extra que, en caso de no conseguir la variable declarada, no impriman el html alrededor...
Por aca dejo el codigo:
Los delimitadores del HTML son { y } y la variable se coloca entre | y | (igual se puede modificar)
Código :
<?php
$prueba = '{<h4>|test|</h4>}';
function imprimirConHTM($variable,$htm1,$htm2) {
$vector['test'] = "Hola"; //temporalmente declarado aca, para efectos de ejemplo, el vector de variables podria ser un vector de la clase o una variable normal...
if ( isset( $vector[$variable] ) ) return $htm1.$vector[$variable].$htm2; //si se encuentra devuelve concatenando el html original
return NULL; //sino no devuelve nada
}
$prueba = preg_replace('@{([\w\W]*)\|([a-z0-9\-_]*?)\|([\w\W]*)}@si', "'. imprimirConHTM('$2','$1','$3') .'", $prueba); //sentencia para reemplazar las ocurrencias con la funcion
eval("echo '$prueba';"); //let it run
?>Saludos.
