Archivo de la etiqueta: php

¿Como saber cuando cae el domingo de pascua de un año en particular con PHP? – Funciones curiosas de PHP

Hace poco que ha pasado la Semana Santa y las fechas en las que cae es algo que nos preguntamos cada año, es muy típica la conversación – ¿Oye el año que viene cuando cae Semana Santa?, puff ni idea.

Hagamos un poco de historia:

La fecha del Domingo de Pascua fue definida por el Concilio de Nicea en el año 325 D.C. como el domingo después de la primera luna llena que cae en o después del Equinocio de Primavera. El equinoccio se asume que cae en el 21 de marzo, por lo que el cálculo se reduce a determinar la fecha de la luna llena y la fecha del siguiente domingo.

Para poder calcular cuando cae ese Domingo en un año en particular, podemos usar 2 funciones con PHP, easter_days() y easter_date().

easter_date

Obtener la fecha Unix para la medianoche de Pascua de un año dado


<span class="type">int</span> <span class="methodname">easter_date</span> ([ <span class="methodparam"><span class="type">int</span> <code class="parameter">$year</code><span class="initializer"> = date("Y")</span></span> ] )

Si no le pasamos ningún parámetro nos devuelve la fecha Unix del domingo de pascua del año actual. Esta función tiene un problema, y es nos devolverá un error si en año no esta en el rango de 1970 y 2037, lo cual es lógico si nos devuelve la fecha Unix. Para calcular cuando cae el domingo de Pascua en años anteriores o posteriores a ese rango utilizaremos easter_days.

easter_days

Obtener el número de días despúes del 21 de marzo en el cuál cae Pascua para un año dado


<span class="type">int</span> <span class="methodname">easter_days</span> ([ <span class="methodparam"><span class="type">int</span> <code class="parameter">$year</code><span class="initializer"> = date("Y")</span></span> [, <span class="methodparam"><span class="type">int</span> <code class="parameter">$method</code><span class="initializer"> = CAL_EASTER_DEFAULT</span></span> ]] )

+ información: http://php.net/manual/es/function.easter-date.php http://php.net/manual/es/function.easter-days.php

Agregar mas de un destinatario al enviar Mails con Zend_Mail – Zend Framework

Supongamos el siguiente ejemplo de Zend_Mail


$mail = new Zend_Mail()

$mail->setBodyText('This is the text of the mail.');

$mail->setFrom('somebody@example.com', 'Some Sender');

$mail->addTo('somebody_else@example.com', 'Some Recipient');

$mail->addCc('somebody_else@example.com', 'Some Recipient');

$mail->addBcc('somebody_else@example.com', 'Some Recipient');

$mail->setSubject('TestSubject');

$mail->send();

Si queremos agregar mas de un destinatario al addTo(), addCc() y al addBcc() lo podemos hacer por medio de un array de direcciones de correo. En el caso del addTo() y el addCc(), estas arrays pueden ser asociativas, y en estas la key es el nombre del destinatario. Es decir:


$toRecipients = array('Some Recipient' => 'somebody_else@example.com', 'Other' => 'other@example.com');

$hideRecipients = array('one@example.com', 'two@example.com');

$mail->addTo($toRecipients);

$mail->addCc($toRecipients);

$mail->addBcc($hideRecipients);

+ Información: http://framework.zend.com/manual/1.12/en/zend.mail.adding-recipients.html

Instalar Zend Server 7 en Linux Mint

Seguramente a muchos no les gusta el Zend Server, unos dirán que es muy pesado, que consume muchos recursos, que es muy lento, que mejor montar un Apache puro con php, etc …, pero a la hora de desarrollar, es muy completo y nos ofrece un montón de ayudas, una de ellas es el Z-Ray que aparece en esta versión, con el que desde el propio navegador web podemos acceder a los procesos y a las consultas que realiza a la base de datos sin tener que habilitar el depurador, simplemente genial.

En fin, si os descargais la versión de Linux y usais Centos, Red Hat, Debian o Ubuntu, no tendréis problema a la hora de instalarlo, pero si usais otra distro como Linux Mint, os dara un error diciendo que no lo podeis instalar, la solución a este problema es sencilla, editamos el fichero que lanzamos para la instalación install_zs.sh y en la linea 17 donde pone:


SUPPORTED_OS='CentOS|Red Hat Enterprise Linux Server|Enterprise Linux Enterprise Linux Server|SUSE|Debian GNU/Linux|Ubuntu|Oracle Linux Server'

Agregamos al final Linux Mint o el nombre del sistema que estamos usando


SUPPORTED_OS='CentOS|Red Hat Enterprise Linux Server|Enterprise Linux Enterprise Linux Server|SUSE|Debian GNU/Linux|Ubuntu|Oracle Linux Server|Linux Mint'

Una vez modificado volvemos a lanzar la instalación y se instala correctamente

Usa el Vi / Vim como tu herramienta de programación

Una herramienta a la cual tengo que acudir muchas veces es al Vim, sobre todo cuando tengo que realizar trabajos remotos. Seguramente alguno de vosotros no sabe de que herramienta estoy hablando, y otros sabréis cual es, pero no la usáis por lo especial que puede llegar a ser, y otros seguramente la usáis, en resumen el Vim o Vi es un editor de texto por linea de comandos, y todas las acciones se realizan desde teclado. Esto, una vez que uno se acostumbra es bastante mas rápido y ligero que usar potentes herramientas de edición o programación.  Y si al Vim le damos soporte para lenguajes de programación, y le damos funciones de autocompletar, comprobación de código y muchas mas cosas… pues bien eso ya existe con spf13-vim. La instalación es muy sencilla y conseguiremos una herramienta muy completa de programación y muy ligera.

spf13-vim

Ver las extensiones cargadas en PHP – PHP Tips

PHP Programming languageEn la entrada de Opciones de PHP desde Linea de comandos veíamos unas cuantas opciones con las cuales usar el comando PHP. Otra de estas opciones es usar la opción -m para ver los módulos que tenemos cargados, usar esta opción es mas clara que usar la opción -i con la cual nos da mas información.

$ php -m
[PHP Modules]
xml
tokenizer
standard
sockets
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

Mas información

Ordenando Arrays de manera natural con PHP – PHP Tips

PHP Programming languageAlgo que nos puede suceder a la hora de ordenar los valores almacenados en un array, es que si estos valores contienen números, al ordenarlo se nos muestra por ejemplo el 10 delante del 2. Esto sucede por que no ordenamos nuestro array de manera natural. Por ejemplo:


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [2] =>
 string(11) "img10.png"
 [1] =>
 string(10) "img2.png"
 [3] =>
 string(11) "img20.png"
}
*/

La función asort ordena los valores del array manteniendo sus indices, tal como vemos en el resultado, y nos ordena los valores respecto al carácter. Esta función acepta otro parámetro llamado sort_flag con el cual podemos especificar que tipo de ordenación queremos. Si lo que queremos es que nos ordene de manera natural tenemos que usar la flag SORT_NATURAL


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array, SORT_NATURAL);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
}
*/

Ahora podemos ver que nuestra array esta ordenada de una manera natural, es decir, el 10 viene detrás del 2.

Otra función, la cual podríamos considerarla como un alias de la anterior es natsort nos ordena de una manera natural directamente.

$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

natsort($array,);

var_dump($array);

/* Devuelve
 array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
 }
 */

Como eliminar las extensiones .php, .html y htm de nuestra pagina web con .htaccess

Apache Web Server

A la hora de presentar nuestra pagina web, a veces nos puede interesar, que el usuario no sepa como esta hecha la pagina web, o simplemente queremos simplificar el enlace para que se pueda acceder de una manera sencilla.

He encontrado esta pagina web, la cual merece ser visitada, ya que esta muy bien hecha, en la cual nos explican de una manera muy sencilla, aunque en inglés, de como configurar, si usamos Apache, con .htaccess, para ocultar las extensiones.

http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/

Error json_encode() json_decode() en Ubuntu 13.10

Durante las pasadas Navidades, y después de pensármelo mucho, actualice la versión de Ubuntu del ordenador que uso para desarrollar. Después de unos cuantos problemas, sobre todo con la tarjeta gráfica, conseguí actualizarlo y dejarlo funcional. Una vez me puse de nuevo a desarrollar me encontré con el siguiente error.

PHP Fatal error: Call to undefined function json_encode()

Resulta que con la actualización de Ubuntu, también se actualiza la versión de PHP, y con esta actualización no se instalan las extensiones de JSON, decir que este error os saldrá si usáis las funciones JSON, las cuales, si realizáis peticiones AJAX, casi seguro que implementáis.

Como solución, lo tipico, abrimos la consola, y ejecutamos el siguiente comando para instalar


sudo apt-get install php5-json

Una vez instalado ya no volverá a salirnos este error.

http://es1.php.net/manual/en/json.installation.php

PHP: isset() versus empty()

Kate's Code Derps

Empty() is generally better to use over isset() ‘cause empty() will pick up strings with no values and will catch empty $_REQUEST statements. Whoo!

Ver la entrada original

Funciones de ordenación de Arrays – PHP Tips

Cuando empece a programar, uno de los ejercicios que teníamos que hacer era la ordenación por el método burbuja, el cual ahora mismo no recuerdo como se hacía, creo que se basaba en ir recorriendo la lista e ir almacenando el valor superior, luego este se volcada en otra lista, y no se qué más. Hoy en día los lenguajes de programación ya disponen de funciones que nos ordenan el array con solo invocarlas.
En PHP la mas conocida es short() la cual nos ordena el array en base a su valor de menor a mayor, pero hay que tener cuidado, ya que no mantiene el valor de las claves, y las renombra por unas numéricas. La función inversa de short() es rshort().
Si queremos ordenar y que nos mantenga el valor de las claves usaremos asort o arsort

Si lo que queremos es ordenar un array en base a sus claves usaremos ksort o su inversa que es krsort

Más información y funciones de ordenación de arrays http://www.php.net/manual/es/array.sorting.php