Snippets PHP - Userlinux.net

Blog sobre sistemas operativos, Linux, Wireless, BSD, Open Source, Software Libre, Mac OS X, Apple... y otras tech

Snippets PHP

Fecha de hoy

Para construir la fecha de hoy en un formato de base de datos (el mismo formato que podemos usar en los datetime de MySQL para hacer consultas, etc) sería de la siguiente forma:

<?php
	$d_err=date("Y-m-d H:i:s");
	$sql="SELECT * FROM Noticias WHERE fecha=$d_err";
?>

Apuntado queda también un ejemplo de uso en SQL.

Menús dinámicos con PHP en 2 minutos

Siempre me he liado más de la cuenta para crear menús dinámicos que se auto marquen cuando el usuario entra en cada una de las secciones de los mismos. Funciones con miles de parámetros, líos de variables... todo eso se ha acabado con el siguiente tip.

Primero definimos el menú (en este caso de forma estática, pero se podría hacer a través de bases de datos o de un include) en una lista simple (ul y li):

<?php
# Pop your code, one link per line, into the $menu variable
$menu = <<<MENU
<ul id="nav">
    <li><a href="/" title="Where the heart is">Home</a></li>
    <li><a href="/archives/" title="Things that have passed.">Archives</a></li>
    <li><a href="/about/" title="All about Matt">About</a></li>
    <li><a href="/photos/" title="It's the 'photo' in Matt">Photos</a></li>
    <li><a href="/music/" title="The food of love">Music</a></li>
    <li><a href="/scripts/" title="Free (as in beer and speech) code">Scripts</a></li>
    <li><a href="/jazzquotes/" title="Great quotes from amazing musicians. More in the future.">Jazz Quotes</a></li>
    <li><a href="/xml/" title="Syndicate the content here. Get Matt to-go.">Syndicate</a></li>
    <li><a href="/contact/" title="Contact.">Contact</a></li>
</ul>
MENU;

Ahora el truco, evaluar la variable $_SERVER[REQUEST_URI] con una expresión regular a ver si coincide con el href de arriba. Siendo así marcamos como id=“current” la opción. El resto lo hace el CSS:

<?php
$lines = split("\n", $menu);
foreach ($lines as $line) {
    $current = false;
    preg_match('/href="([^"]+)"/', $line, $url);
    if (substr($_SERVER["REQUEST_URI"], 0, 5) == substr($url[1], 0, 5)) {
        $line = str_replace('<a h', '<a id="current" h', $line);
        }
    echo $line."\n";
}
?>

Cambio mayúsculas/minúsculas con caracteres acentuados

En PHP existen funciuones específicas para estas operaciones, strtoupper() y strtolower(), pero no son funcionales al 100% (al menos en castellano) por el tema de los caracteres acentuados, que no los convierten.

Combinando el uso de las mencionadas funciones con strstr() para sustituciones en los caracteres conflictivos tenemos:

<?php
echo strtr(strtoupper("hola tío"), "àáâãäåæçèéêëìíîïðñòóôõöøùüú", "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ"); # HOLA TÍO
echo strtr(strtolower("HOLA TÍO"), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ", "àáâãäåæçèéêëìíîïðñòóôõöøùüú"); # hola tío
?>