Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/12/2012, 00:22
Avatar de syntex
syntex
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: foreach en un archivo .hml

Hola buenas estoy creando la libreria para que me interprete una condicion [if/elseif], casi lo tengo pero veo que no me funciona correctamente, me podéis ayudar?

$template = Código HTML:
HTML:
{{if $FOTO != ""}}
aa
{{elseif $FOTO == ""}}
bb
{{/if}}

PHP:
function var_if($template)
{
# {{if ...}} | {{elseif ...}} |{{/if}}
# ************************************************** *******************
$preg_match = '/{{if(.*)}}|{{elseif(.*)}}|{{(.*)if}}/i';
if (preg_match_all($preg_match, $template, $cortar, PREG_SET_ORDER))
{
if (is_array($cortar))
{
foreach ($cortar as $key => $value)
{
# Variable
# ************************************************** *******************
$var_if_original = $value[0];

# {{if ....}}
# ************************************************** *******************
if (stristr($value[0],"{{if "))
$if_original = $value[0];

# {{elseif ....}}
# ************************************************** *******************
if (stristr($value[0],"{{elseif "))
{
$elseif_original = $value[0];
}
# {{/if}}
# ************************************************** *******************
if (stristr($value[0],"{{/if}}"))
$close_if_original = $value[0];

# Conocer el interior del {{if }} hasta {{elseif }}
# ************************************************** *******************
if (!empty($if_original) && !empty($elseif_original))
{
$preg_match = '#'.$if_original.'(.*?)'.$elseif_original.'|'.$els eif_original.'(.*?){{/if}}#s';
if (preg_match_all($preg_match, $template, $cortar1, PREG_SET_ORDER))
{
if (is_array($cortar1))
{
foreach ($cortar1 as $value1)
{
$value1[0] = str_replace($elseif_original,'',$value1[0]);
$if_original = $value1[0];

# if
$value1[0] = str_replace('{{if ', "<? if (", $value1[0]);

$value1[0] = str_replace('}}', '){ ?>', $value1[0]);

$if_middle = $value1[0];

}
}
}
}

# Conocer el interior del {{elseif }} hasta {{/if }}
# ************************************************** *******************
if (!empty($elseif_original))
{
$preg_match = '#'.$elseif_original.'(.*?){{/if}}#s';
if (preg_match_all($preg_match, $template, $cortar1, PREG_SET_ORDER))
{
if (is_array($cortar1))
{
foreach ($cortar1 as $value1)
{
$elseif_original = $value1[0];

#elseif
$value1[0] = str_replace('{{elseif ', '<? }elseif (', $value1[0]);
$value1[0] = str_replace('{{/if}}', '<? } ?>', $value1[0]);
$value1[0] = str_replace('}}', '){ ?>', $value1[0]);

$else_middle = $value1[0];

}
}
}
}

if (!empty($if_middle) && !empty($else_middle))
{


ob_start();
$if_middle.$else_middle;
$if = ob_get_clean();

echo $if_middle.$else_middle."<br>";

$template = str_replace($if_original,$if, $template);
$template = str_replace($elseif_original,$elseif, $template);

$if_original = "";
$elseif_original= "";
$if_middle = "";
$else_middle = "";
$if = "";
$elseif = "";

}

}
}

}

return $template;
}
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------