Foros del Web » Programando para Internet » PHP »

Template engine casero - Recoger HTML y filtrar PHP

Estas en el tema de Template engine casero - Recoger HTML y filtrar PHP en el foro de PHP en Foros del Web. Estoy buscando la manera de hacer un template engine casero. Por ahí leyendo algunos artículos quise intentar hacer lo siguiente: con file_get_contents quiero recoger el ...
  #1 (permalink)  
Antiguo 16/12/2013, 20:58
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
Template engine casero - Recoger HTML y filtrar PHP

Estoy buscando la manera de hacer un template engine casero. Por ahí leyendo algunos artículos quise intentar hacer lo siguiente: con file_get_contents quiero recoger el archivo HTML estático, luego filtrar todo lo que sea para PHP y en base a eso procesar los datos correspondientes, luego imprimir el html "procesado". Por ejemplo, el HTML sería:

Código HTML:
{% if ($var = 0) %}
    UNA COSA
{% else %}
    OTRA COSA
{% endif %}
Lo que quiero es que mi script recoja eso y filtre lo necesario para procesar, y los procese, luego imprima el HTML.
Estoy tratando desde hace rato pero no encuentro la manera, uso funciones como explode, preg_split , str_split, etc. pero no consigo encontrar la lógica para lograr exactamente lo que quiero. Me pueden dar un empujón? Será que existe alguna función que me facilite hacer eso?
No es sólo con este ejemplo, sé que tendré que hacer demasiadas cosas para que sea lo más flexible posible. Pero por el momento estoy buscando la manera de hacer algo básico: un if - else.
  #2 (permalink)  
Antiguo 17/12/2013, 06:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Template engine casero - Recoger HTML y filtrar PHP

Código PHP:
Ver original
  1. <?php if ($var == 0) { ?>
  2.     UNA COSA HTML
  3. <?php } else { ?>
  4.    OTRA COSA HTML
  5. <?php } ?>

esto?

Incluso

Código PHP:
Ver original
  1. <?php if ($var == 0) { ?>
  2.     UNA COSA HTML La variable php es <?php echo $var;?> un cero<br />
  3.     (recuerda que se usa <strong>==</strong> para comparar e <br />
  4.     <strong>=</strong> para asignar.
  5. <?php } else { ?>
  6.    OTRA COSA HTML A qui la variable no es cero es <?php echo $var;?>
  7. <?php } ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/12/2013 a las 06:14
  #3 (permalink)  
Antiguo 17/12/2013, 10:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Template engine casero - Recoger HTML y filtrar PHP

Usando sintaxis alternativa:
Código PHP:
Ver original
  1. <?php if ($var == 0): ?>
  2.     UNA COSA HTML La variable php es <?php echo $var;?> un cero<br />
  3.     (recuerda que se usa <strong>==</strong> para comparar e <br />
  4.     <strong>=</strong> para asignar.
  5. <?php else: ?>
  6.    OTRA COSA HTML A qui la variable no es cero es <?php echo $var;?>
  7. <?php endif; ?>

http://www.php.net/manual/en/control...ive-syntax.php

También puedes usar smarty, twig u otro, hay varios para escoger.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 17/12/2013, 13:09
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Template engine casero - Recoger HTML y filtrar PHP

Creo que no me entendieron xD lo que necesito es hacer el template engine y aislar el PHP y el HTML.

Soy consciente de que PHP es de por sí un sistema de plantillas, que se puede insertar PHP directamente en HTML, etc etc.

Pero lo que yo quiero lograr es separar completamente el HTML y el PHP, así como smarty y los otros template engines.
Quiero tener los archivos .html separados y que no se incluya nada de PHP, quiero que el archivo sea un .html estático. Luego con PHP quiero recoger ese archivo .html y filtrar todo lo que sea para PHP en un script a parte (en este caso todo lo que esté dentro de los {% %}). Luego devolver el HTML procesado.
Sé que es posible de la manera que estoy planteando pero todavía no encuentro la forma, aunque de a poco ya estoy progresando.

Personalmente no me gustan esos template engines, ya que se puede combinar PHP y HTML sin problemas, y un template engine lo único que hace es sobrecargar el sistema. Pero es sólo a modo de práctica, en mis sistemas yo uso la sintaxis alternativa y trato de incluir lo más mínimo posible de PHP en el HTML.

PD: se me escapó el "=" fue un error, sé que se utiliza "==" para comparar.

Última edición por mathiasmontiel; 17/12/2013 a las 13:23
  #5 (permalink)  
Antiguo 17/12/2013, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Template engine casero - Recoger HTML y filtrar PHP

Así de pronto se me ocurre algo así:

Código PHP:
<?php

$tpl 
'
{% if $foo > 0 %}
  FOO
{% else %}
  BAR
{% endif %}
'
;


$open '/\{%\s*(if|for|foreach|while|switch|else(?:\s*if))\s+([^{}]*)\s*%\}/';
$close '/\{%\s*end(if|for|foreach|while|switch)\s*%\}/';
$another '/\{%\s*else\s*%\}/';

$tpl preg_replace($open'<?php \\1 (\\2): ?>'$tpl);
$tpl preg_replace($close'<?php end\\1; ?>'$tpl);
$tpl preg_replace($another'<?php else: ?>'$tpl);

echo 
$tpl;
Pero bueno, a decir verdad yo usaría algún sistema de plantillas existente, hay muchos y bastante buenos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 17/12/2013, 14:17
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Template engine casero - Recoger HTML y filtrar PHP

Lo analizaré, tal vez me pueda servir. Gracias!

Si tuviera que usar un template engine también utilizaría uno existente, pero es que me dio la curiosidad de hacer uno propio. Sólo para practicar, tal vez lo extienda o no sé, pero por ahora sólo por curiosidad.

Última edición por mathiasmontiel; 17/12/2013 a las 14:23

Etiquetas: casero, engine, filtrar, html, recoger, template
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:15.