Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Expresiones regulares de vi y Perl para sustituir comas por puntos en números decimales, y cómo aplicarlo en PHP

Imago voragine.net
• Por

Los lenguajes de programación fueron inventados por gente que hablaba y escribía en inglés, así que están pensados para funcionar con las convenciones lingüisticas y matemáticas inglesas. Cuando cualquier lenguaje de programación tiene que relacionarse con bases de datos en idiomas diferentes siempre hay problemas.

Uno típico se da cuando se utiliza una base de datos en español que contiene números racionales en su expresión decimal. Para notar los decimales en inglés se utiliza el punto (0.45) y en español la coma (0,45). Así que antes de operar con estos números hay que convertir esas comas en puntos para que el lenguaje de programación entienda los números como decimales.

Este problema lo encontramos por ejemplo cuando queremos insertar datos que tenemos en un CSV a una base de datos SQL, utilizando PHP. Pondré como ejemplo el CSV de un proyecto en el que estoy trabajando, una herramienta para medir las emisiones de dióxido de carbono en los procesos constructivos.

Podemos transformar los números fácilmente usando expresiones regulares de vi en el editor vim, o expresiones regulares Perl en PHP mediante la función preg_replace.

Función PHP para eliminar parámetros de una URL

Imago voragine.net
[actualizado el ] • Por Enlace permanente

En el hilo de comentarios de la entrada PHP Function: Remove a Query String Key, Value del blog de David Walsh hay un buen puñado de funciones que permiten eliminar parámetros de una URL. Una de ellas me parece una solución más sencilla que la propone el propio David.

La he modificado mínimamente para que ofrezca la posibilidad de eliminar más de un parámetro:

Por ejemplo:

Cómo hacer una petición POST a un servidor usando cURL en un script PHP

Imago voragine.net
[actualizado el ] • Por Enlace permanente

cURL es muy útil para comunicarse con muchas APIs o más en general para automatizar peticiones y enviar datos entre servidores en internet. Cuando se usa cURL los datos se pueden enviar usando varios protocolos.

El siguiente snippet hace una petición a un servidor remoto enviando datos mediante el protocolo HTTP POST:

Cómo hacer copias de seguridad de bases de datos con PHP y mysqldump

Imago voragine.net
• Por
Los siguientes scripts de PHP llaman al programa mysqldump para hacer una copia de seguridad de una base de datos. La primera versión, básica, genera un archivo comprimido con gzip que aloja en la ubicación desde donde se ejecute el script. La segunda versión incorpora una salida para cada comando utilizado, para saber en el caso de que haya fallo dónde se ha producido; además utiliza bzip2 como compresor, más eficiente. Realizar copias de bases de datos mediante un script de PHP puede ser útil si no tenemos acceso SSH al servidor.

Función PHP para limpiar una cadena de texto y usarla como URL

La siguiente función, cuyo autor es Chyrp, prepara un string para ser usado como parte de una URL. Por ejemplo, permite crear el slug de un artículo a partir de su título.

Cómo incluir un archivo en una variable: funciones de control de salida y bufers en PHP

Imago voragine.net
• Por
Frecuentemente se usan en PHP las funciones include o require para incluir un archivo en otro. Esto se suele usar para fragmentos de código necesarios en múltiples lugares, para evitar así la repetición; también para estructurar el código y facilitar su edición. Ninguna de estas soluciones es válida si se quiere incluir el contenido de un archivo en una variable. Fundamentalmente porque esos archivos pueden contener código PHP que al ejecutarse produce una salida, en forma de código HTML, que es lo se quiere capturar con la variable. Es decir, en la variable no queremos el código "fuente", sino el código ya "procesado" por PHP.

Usando un archivo de texto plano como base de datos: alternativa ligera a SQL

Imago voragine.net
• Por

Hay aplicaciones web para las que una base de datos SQL se le queda grande. Una base de datos SQL necesita un servidor de base de datos que consume no pocos recursos en nuestra máquina; además la base de datos necesita ser creada, junto a los usuarios y sus permisos, hace falta configurar correctamente codificaciones, crear las diferentes tablas...

Por otro lado, aunque los archivos SQL son archivos de texto plano, su edición manual, sin utilizar los comandos que proveé un intérprete, como PHP por ejemplo, es tediosa. Para utilizar un conjunto de datos ya generado, generalmente hay que programar un script que los formatee según la sintaxis SQL para poder insertarlos en la base de datos.

¿Por qué no utilizar un archivo de texto plano como base de datos? Esto nos ahorra todo el trabajo relacionado con el servidor de base de datos. Además permite trabajar directamente con un archivo editable por una persona.

Mostrar errores en PHP

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Al instalar PHP en nuestro servidor, los errores vienen desactivados, de manera que no se muestran en el navegador al ejecutar PHP. Para que aparezcan basta asignar On como valor a la opción display_errors del archivo php.ini:

Actualización: Más información sobre cómo mostrar errores en PHP.

Cuidado con los espacios en blanco al usar getimagesize: error failed to open stream

Imago voragine.net
• Por
La función getsizeimage de PHP devuelve una matriz con información sobre una imagen: sus dimensiones, el tipo de imagen... Muy útil para hacer redimensiones o saber si está dentro de los límites de tamaño que queremos manejar en nuestra página, por ejemplo. La tenemos que alimentar con la ruta hasta el archivo, incluyendo el nombre completo. Para usarla sólo hay que tener presente que el nombre del archivo de imagen tiene que ser una cadena sin espacios al principio o al final.