Leer un fichero de texto línea por línea con PHP

Un pequeño código para leer un fichero de texto línea por línea:

$handle = fopen("mifichero.txt", "r");
if ($contenido) {
    while (($linea = fgets($contenido)) !== false) {
        // hacemos algo con la línea
    }
} else {
    // no se ha podido leer el fichero
}

Me han pasado un fichero de texto con un listado de unos 3500 códigos para cargar en una base de datos, y cada uno tenía que estar vinculado con distintos valores de distintas tablas, así que para cada línea necesitaba una consulta diferente. En menos de cinco minutos, hecho.

Personalizar las reglas de escritura de URL en WordPress

En uno de los proyectos en los que estoy trabajando actualmente he tenido que crear una serie de páginas con contenido personalizado para integrar en un tema de WordPress. El problema con el que me encontré es que los enlaces permanentes de WordPress llevan su propia dinámica —más allá de editar el fichero .htaccess— y si preparas páginas o entradas con contenido propio, quizás quieras o debas seguir usando las URLs semánticas por aquello del SEO y otras historias.

Así pues, además de tener preparadas las páginas de plantilla que puedas necesitar, lo primero será registrar esas nuevas reglas de escritura para las URL. Puedes incluir este código en el fichero functions.php de tu tema, por ejemplo:

add_action( 'init', 'mis_reglas_rewrites_init' );
function mis_reglas_rewrites_init(){
    add_rewrite_rule('mipagina/([0-9]+)-(.*).html?$','index.php?pagename=mipagina&mivariable_id=$matches[1]','top' );
}

add_filter( 'query_vars', 'misreglas_query_vars' );
function misreglas_query_vars( $query_vars ){
    $query_vars[] = 'mivariable_id';
    return $query_vars;
}

Luego puedes ir a los ajustes de enlaces permanentes desde la administración de WordPress y guarda los ajustes de enlaces permanentes para que refresque estas reglas, no es necesario que cambies nada, simplemente guarda cambios tal cual lo tengas configurado. También puedes llamar a la función flush_rewrite_rules(); para forzar este refresco.

Para recuperar la variable en las páginas que añadas a tu tema de WordPress, puedes hacerlo con la siguiente función:

get_query_var('mivariable_id');

Mientras estés con el desarrollo, si quieres consultar y mostrar en pantalla todas las reglas de escritura de URLs que tienes, puedes usar esta función. Así puedes echar un vistazo a lo que realmente está usando WordPress, por si alguna URL no funciona como esperabas.

function mostrar_rewrite_rules() {
	global $wp_rewrite;
	if (!empty($wp_rewrite->rules)) {
		echo 'Reglas para enlaces permanentes';
		echo '
'; foreach ($wp_rewrite->rules as $nombre => $valor) { echo $nombre.'
'.$valor.'
'; } echo '-fin-'; } else { echo 'Nada que mostrar'; } }

En el Codex de WordPress puedes encontrar muchísima más información si has de desarrollar o personalizar un tema para este gestor de contenidos. Las posibilidades de este CMS llegan hasta donde llegue tu imaginación 🙂

Procesar código PHP en documentos HTML

Con frecuencia he tenido que añadir algo de PHP a sitios web ya realizados en los que el diseñador había construido todo el sitio con ficheros .html, de manera que los enlaces apuntan a documentos .html y no .php, y uno se encuentra con que los documentos con extensión .html no procesan el código PHP y viene tal cual en el código fuente de la página una vez que llega al navegador.

Como resultaría un poco incordio tener que modificar todos los enlaces —sobre todo si no se han usado plantillas o includes y cada página es independiente— una de las soluciones más rápidas es añadir un fichero .htaccess con las siguientes líneas

AddType application/x-httpd-php .html
AddHandler application/x-httpd-php .html

De esta forma, los documentos .html se procesan de la misma forma que los .php en el servidor y nos ahorramos tener que modificar extensiones de ficheros o enlaces.

Claves aleatorias con PHP

Pequeño script para generar claves o códigos de forma aleatoria.

$caracteres = "1234567890abcdefghijklmnopqrstuvwxyz";
$clave = "";
for($i=0; $i<10; $i++) {
	$clave .= substr($caracteres,rand(0,36),1);
}
echo "La clave generada: ".$clave;

Si quieres utilizar mayúsculas y minúsculas —u otros caracteres— los puedes añadir en la primera línea y luego modficas el segundo parámetro de rand() para indicar el total que tengas. En este ejemplo se genera un código de 10 caracteres, pero pueden ser los que tu especifiques.