Me imagino que quieres tratar de optimizar. Aunque todo se resume en una linea:
preg_match('/^DATE\(([^\s]+)\s([^\)]+)\)$/', $string, $result);
O eso fue lo que entendi...
En el tema de los Array solo se podría implementar un solo arreglo que seria el de la busqueda ($cad_buscar).
<?php
$string = 'DATE(FECHA M)';
$cad_buscar = array('/^DATE\(([^\s]+)\s([^\)]+)\)$/');
echo date($result[2], $db[$result[1]]);
?>
Pero el array debe contener un solo valor no ?, si fuese asi, entonces seria mas trabajo, porque ahorita el comando con el que hemos estado lidiando es
DATE(FECHA M), pero despues podria ser que el comando fuese:
URL(DATO) en donde, lo que se haria es: extraer el
Dato, pasarle el htmlentities o el url_encode...
Mi idea anterior (cuando usaba preg_replace()), era la
universalidad del codigo, en donde en el arreglo busqeda ponia todas las asignaciones y en el arreglo remplazo lo que queria que se hiciera... Pero claro, necesitamos preg_match() para lograr el objetivo y a como leo en el manual de php, preg_match() en su primer y segundo argumento requieren un
string y no un string array.
Que podriamos hacer ?
Ahora DATE(FECHA M) ya se soluciono con tu propuesta, pero quiero que el mismo code pueda funcionar con otros comandos de forma mas simple, sin tener que implementar un
if(strstr($dato, "DATE(") ) para cada tipo (DATE(), URL(), etc...)....
El code quedo asi:
<?php
function comando($cmd, $db)
{
$box= get_script_clearjump($cmd); # eliminamos salto de linea '\n'
#$cad_buscar= array(
# '/DATE\((.*?) (.*?)\)/is'
# );
#$cad_remplazo= array(
# date("$y[2]", $db['$y[s1]'])
# );
$box= preg_match( '/DATE\((.*?) (.*?)\)/is', $box, $y ); # $box= preg_replace( $cad_buscar, $cad_remplazo, $box );
$r= ucfirst( spanish_daymonth
( date($y[2], $db[$y[1]]) ) ); # traducimos a castellano la palabra return $r;
}
?>