Outbook

HTML+CSS+JS, Accesibilidad, PHP y más

Inicio que contiene a Programación

Datos de búsqueda

Etiqueta ‘Programación’

PHP: Partir una variable en varias líneas

Fecha de publicación: 2008/12/01

En ocasiones al escribir el contenido de una variable PHP se emplean líneas distintas que pueden no ser consecutivas, por ejemplo:

$html = $html.'<p>Primer elemento</p>';
$html = $html.'<p>Segundo elemento</p>';
$html = $html.'<p>Tercer elemento</p>';

Cuando sería más correcto:

$html .= '<p>Primer elemento</p>';
$html .= '<p>Segundo elemento</p>';
$html .= '<p>Tercer elemento</p>';

En el segundo ejemplo se ha sustituido la variable después del símbolo "igual" por un punto justo antes de dicho símbolo.

Datos del artículo:

PHP: redondeo de números decimales hacia abajo (floor)

Fecha de publicación: 2008/11/30

La función PHP floor permite eliminar la parte decimal de un número redondeándolo hacia abajo. Por ejemplo, 11.22 se redondearía a 11, 11.9999 se redondearía a 11:

echo floor(11.22); // 11
echo floor(11.9999); // 11

Para realizar el redondeo hacia arriba se usa ceil.

Saber más sobre floor.

Datos del artículo:

PHP: number_format (formateo de numeros)

Fecha de publicación: 2008/07/11

Cuando se hacen operaciones aritméticas en PHP pueden salir números con un montón de decimales, no llevan el punto (o la coma si se está escribiendo en inglés) para separar los miles, ni la coma para los decimales.

Pero la gente del PHP ha pensado en ello y nos proporcionan una función para solventar con facilidad estos ligeros inconvenientes: number_format()

Su uso es muy sencillo, solo han de introducirse los párametros en el siguiente orden:

  • Variable que represente al número.
  • Número de decimales.
  • Lo que se quiera que aparezca para separar los decimales (punto o coma).
  • Lo que se quiera que aparezca para separar los miles (punto o coma).

Un ejemplo de uso:

$numero = 7219091.429939281617
number_format($numero, 2, ",",".");
/* Devuelve: 7.219.091,43 */

Enlaces relacionados

Datos del artículo:

PHP: clase para recortar imágenes

Fecha de publicación: 2008/06/12

Hoy me he encontrado con una clase PHP para recortar imágenes.

He aquí el código para la clase (solo le he añadido un pequeño detalle para poder elegir el tamaño de la imagen resultante):

class cropImage {
 var $imgSrc,$myImage,$cropHeight,$cropWidth,$x,$y,$thumb;

 function setImage($image) {

  //Your Image
  $this->imgSrc = $image;

  //getting the image dimensions
  list($width, $height) = getimagesize($this->imgSrc);

  //create image from the jpeg
  $this->myImage = imagecreatefromjpeg($this->imgSrc) or die("Error: Cannot find image!");
  if($width > $height) $biggestSide = $width; //find biggest length
  else $biggestSide = $height;

  //The crop size will be half that of the largest side
  $cropPercent = .5; // This will zoom in to 50% zoom (crop)
  $this->cropWidth   = $biggestSide*$cropPercent;
  $this->cropHeight  = $biggestSide*$cropPercent;

  //getting the top left coordinate
  $this->x = ($width-$this->cropWidth)/2;
  $this->y = ($height-$this->cropHeight)/2;
}

 function createThumb($size) {
  $thumbSize = $size; // will create a 250 x 250 thumb
  $this->thumb = imagecreatetruecolor($thumbSize, $thumbSize);
  imagecopyresampled($this->thumb, $this->myImage, 0, 0,$this->x, $this->y, $thumbSize, $thumbSize, $this->cropWidth, $this->cropHeight);
 }

 function renderImage() {
  header('Content-type: image/jpeg');
  imagejpeg($this->thumb);
  imagedestroy($this->thumb);
 }

}

Y se utiliza con el siguiente código:

$image = new cropImage;
$image->setImage($img);
$image->createThumb($size);
$image->renderImage();

La variable $img es la url de la imagen original, y la variable $size es el tamaño de imagen (sale con forma de cuadrado), tanto de anchura como de altura (ha de ser un número entero).

Datos del artículo:

PHP: manejo de sesiones

Fecha de publicación: 2008/06/05

Siempre que se vaya a hacer algo con sesiones debe añadirse este fragmento en el código (antes de cualquier otra cosa que envíe datos al navegador):

session_start();

Posteriormente se pueden definir (o redefinir) variables de sesión, en este caso si el usuario está registrado y el idioma de preferencia:

$_SESSION['logado'] = 'si';
$_SESSION['idioma'] = 'ingles';

O destruir las variables de sesión anteriormente definidas:

$_SESSION = array();
session_destroy();

Se puede definir el tiempo que durará la sesión (hay que ponerlo antes del session_start();), en este caso 1 hora (3600 segundos):

session_set_cookie_params(3600);

Saber más sobre sesiones en PHP

Datos del artículo:

Tabla para generar expresiones regulares

Fecha de publicación: 2008/04/22

Expresión Descripción
. Cualquier caracter
\ Indica que el caracter que le sigue ha de ser interpretado como tal, y no como parte de la sintaxis de la expresión regular. Por ejemplo, "\." indica que debe interpretarse como punto.
() Para agrupar operadores
{n} Busca la cadena especificada n veces. Por ejemplo, a{2} devuuelve ‘aa’.
{n,m} Busca la cadena especificada entre n y m veces. Por ejemplo: a{2,4} devuelve ‘aa’, ‘aaa’, or ‘aaaa’.
{n,} Busca la cadena especificada n o más veces.
* Devuelve 0 o más veces la cadena especificada.
+ Devuelve 1 o más veces la cadena especificada.
? Devuelve 0 o 1 vez la cadena especificada.
| Devuelve o bien la cadena que haya a la izquierda o la que haya a la derecha (como un operador booleano OR).
[aeiou] Devuelve la cadena que contenga caracteres entre los especificados.
[a-z] Similar al anterior, pero ahora se especifica un intervalo (de la "a" a la "z")
[^aeiou] Excluye las cadenas con caracteres entre los especificados.
$ Se pone al final, señalando el final de la línea. De esta forma se busca línea por línea, y ninguna de las cadenas que devuelve estará en más de una línea.

Saber más sobre las expresiones regulares en MSDN y saber más en Regular-Expressions.info.

Datos del artículo:

PHP: redondeo de números decimales hacia arriba (ceil)

Fecha de publicación: 2008/04/21

Actualizado: 2008-11-30

La función PHP ceil permite eliminar la parte decimal de un número redondeándolo hacia arriba. Por ejemplo, 11.22 se redondearía a 12, 11.9999 se redondearía a 12:

echo ceil(11.22); // 12
echo ceil(11.9999); // 12

Para realizar el redondeo hacia abajo se usa floor.

Saber más sobre ceil.

Datos del artículo:

PHP: recoger fragmentos de una cadena mediante preg_match_all

Fecha de publicación: 2008/03/26

Supongamos que tenemos un texto largo en HTML que forma una cadena de texto:

<p>Listado de elementos</p>
<ul>
 <li><a href="#">Elemento 1</a></li>
 <li class="elegido"><a href="#">Elemento 2</a></li>
 <li><a href="#">Elemento 3</a></li>
 <li><a href="#">Elemento 4</a></li>
 <li class="elegido"><a href="#">Elemento 5</a></li>
 <li><a href="#">Elemento 6</a></li>
</ul>

Y queremos sacar únicamente los elementos LI con class="elegido".

Esto es posible con la funcion PHP preg_match_all, que nos devolverá un array con los fragmentos que haya encontrado:

<?
$htmlOriginal = '<p>Listado de elementos</p>
<ul>
 <li><a href="#">Elemento 1</a></li>
 <li class="elegido"><a href="#">Elemento 2</a></li>
 <li><a href="#">Elemento 3</a></li>
 <li><a href="#">Elemento 4</a></li>
 <li class="elegido"><a href="#">Elemento 5</a></li>
 <li><a href="#">Elemento 6</a></li>
</ul>';

$htmlABuscar = '/<li class="elegido".*li>/';

preg_match_all($htmlABuscar, $htmlOriginal, $htmlFinal);

echo $htmlFinal[0]; // <li class="elegido"><a href="#">Elemento 2</a></li>
echo $htmlFinal[1]; // <li class="elegido"><a href="#">Elemento 5</a></li>
?>

Saber más sobre preg_match_all.

Datos del artículo:

PHP: convertir cadena de texto a mayúsculas o a minúsculas

Fecha de publicación: 2008/03/24

Para pasar a minúsculas:

$resultado = strtolower($origen)

Para pasar a mayúsculas:

$resultado = strtoupper($origen)

Para pasar a mayúsculas solo la primera letra de cada palabra:

$resultado = ucwords($origen)

Para pasar a mayúsculas solo la primera letra de la cadena de texto (como la anterior pero solo para la primera palabra):

$resultado = ucfirst($origen)

Saber más

Datos del artículo:

PHP: Hallar múltiplos para las iteraciones de un bucle

Fecha de publicación: 2008/03/24

Hay ocasiones en las que al hacer un bucle en PHP es necesario que la salida de una de las iteraciones tenga alguna peculiaridad, como que por ejemplo cada tres elementos de lista haya un atributo class.

Supongamos que tenemos el siguiente bucle:

$i=0;
while ($valor < $numero) {
 echo '<li>'.$elemento[$i].'</li>'
 $i  ;
}

Supongamos que queremos que aparezca una clase cada tres elementos de lista, tendremos que meter esa clase en los elementos en los que la variable $i sea múltiplo de tres:

$i=0;
while ($valor < $numero) {
 $k = $i-1; //Para corregir el problema de que se empieza a contar de 0 
 if ($k % 3 == 0) {$clase = ' class="tercero"';}
 echo '<li'.$clase.'>'.$elemento[$i].'</li>'
 $i  ;
}

De esta forma el elemento de lista que sea múltiplo de 3 llevará la clase tercero.

Saber más en Programación en PHP/Bucles (Wikilibros).

Datos del artículo:

Información del sitio