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.