19 Jul, 2007
Hace un rato terminaba un sitio, en el que por cuestiones de logística requería convertir una cadena con nomenclatura "camelCased" a una cadena del tipo "hyphen-ated". No tengo la menor idea que signifiquen esos términos. Básicamente la necesidad es pasar cadenas del tipo "yoLeoTechniqCadaDia" a cadenas del tipo "Yo leo techniq cada dia". En MooTools es cosa sencilla, haciendo lo siguiente:
JavaScript:
-
"yoLeoTechniqCadaDia2000".hyphenate(); //la salida es: "Yo-Leo-Techniq-Cada-Dia2000"
El problema es que yo lo quería hacer con php, y además no quería los guiones, ni las mayúsculas, excepto por la primera; y además que si hay una cadena que comience por número, haga lo mismo. Comencé a hacer una función que haga dicho proceso. Pero me dije: - Tiene que haber una manera sencilla, así que procedí a hacer lo propio. Buscar en San Google. Y efectivamente, encontré la manera exacta de hacer lo que necesitaba. De la siguiente forma:
PHP:
-
-
// Efectivamente, eso me devuelve lo buscado, "Yo leo techniq cada dia 2000"
Explicando brevemente la línea, lo que hace es buscar un patrón a partir de una expresión regular, en este caso busca cualquier letra mayúscula de la A a la Z, ó una cadena que comience con un número, dentro de la cadena de texto que se le pasa como tercer parámetro a la función ereg_replace. Una vez que encuentra el patrón, lo sistutuye por lo mismo que se encontró, pero antecedido por un espacio. Luego, a esto que se obtuvo, se le aplica la función strtolower que se encarga de pasarnos toda la cadena de texto a minúsculas. Y por último, le aplicamos mayúscula sólo a la primer letra de la cadena resultante, con la función de php "ucfirst".
Eso es todo, ese renglón me sacó de un gran apuro. La instrucción puede ser tremendamente útil, y muy variada, con tan sólo cambiar la expresión regular por otra. Ya depende de lo que se necesite hacer, y utilizando un poco de creatividad.
20 Jun, 2007
En Sentido Web publican esta entrada en la cual muestran el código con el que por medio de Javascript controlan el número de teclas pulsadas, con el fin de limitar el número de caracteres de entrada. Esto es útil sobre todo cuando la información que se está escribiendo se va directo a un campo de la base de datos, que esté limitado a un tamaño, y así hacer una buena validación de entrada a la base de datos. Bien, pues el ejemplo no impide que se continue escribiendo, pero si te indica con una barra en color rojo cuando te pasaste, y así permitirte reducir el texto deseado a fin e dejarlo en la longitud deseada. Luis Sacristán lo explica a detalle.
Lo que procedemos hacer acontinuación tomando como base el ejemplo de Luis Sacristán, y para todos aquellos que como yo ya no saben escribir Javascript sino MooTools, es Mootoorizar el ejemplo de la siguiente manera:
HTML____________________________________
HTML:
-
-
-
<div id="progreso"> </div>
-
</div>
JAVASCRIPT_______________________________
JavaScript:
-
var Site={
-
max:250,
-
w:300,
-
start:function(){
-
var args=[$('progreso'), textarea=$('txtArea')];
-
textarea.addEvent('keyup',Site.progreso_tecla.pass(args)).fireEvent("keyup", args);
-
},
-
progreso_tecla:function(progreso,obj){
-
progreso.setStyles(
-
(obj.value.length <Site.max)?
-
{backgroundPosition:"-"+(Site.w-((Site.w*obj.value.length.toInt())/Site.max).toInt())+"px 0px", backgroundColor:'#FFF',backgroundImage:'url(textarea.png)',color:'#000'}:
-
{backgroundColor:'#C00',backgroundImage:'url()',color:'#fff'}
-
).setHTML("("+obj.value.length+" / "+Site.max+")");
-
}
-
}
-
window.addEvent('domready',Site.start);
El ejemplo corriendo aqui.