Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

jueves, 24 de febrero de 2011

El operador ternario

En informática un operador ternario (a veces incorrectamente llamado operador terciario) es un operador que toma tres argumentos. Los argumentos y el resultado puede ser de diferentes tipos. Su sintaxis sería así.

resultado = condición ? valor_si_cierto : valor_si_falso

Esta operador está presente en muchos de los lenguajes de programación modernos y muchos otros bastante menos modernos. El lenguaje C, y casi todos los lenguajes que han derivado de él la han heredado (C++, C#, Java, PHP...) Aunque muchos otros lenguajes no disponen de ella, que yo sepa... por ejemplo, todos los derivados de Pascal (Delphi, Modula, Oberon...). No es ni mucho menos una construcción imprescindible, aunque suele venir muy bien.

Veamos un ejemplo cásico, el mayor de dos números, usando código PHP:

Con el operador binario > (mayor-menor) sería así:
if ($a > $b)
   $max=$a;
else
   $max=$b;
echo $max; //mostramos el máximo

Con el operador ternario:
$max = ($a > $b) ? $a : $b;
echo $max;

o incluso:
echo ($a > $b) ? $a : $b;

martes, 14 de diciembre de 2010

Descargar todas las imágenes de una web con php

Hoy quiero mostraros un script que he hecho en php el cual dada una url (que pide primero), descarga todas las imágenes (públicas) de esa página a nuestro servidor (que si lo probamos desde localhost obviamente lo descarga en nuestro PC).

El script, básicamente consiste en 2 funciones:
La 1ª almacena en un path todas las imágenes (cogiendo la etiqueta img de html).
Y la segunda crea una copia para cada imagen en nuestra máquina local, dentro de la carpeta images.

Sin más dilación os dejo el código:


<?phpfunction imagenesHTML($url, $norepetidos = true)
{
$contenido = @file($url);
$contenido = array_map("trim", $contenido);
$contenido = implode(" ", $contenido);

if (
preg_match_all('/<img([^<>]+)>/i', $contenido, $match) ) {
foreach(
$match[1] as $atributos) {
if (
preg_match('/src="([^"]+)"/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
} elseif (
preg_match('/src=([^ ]+)/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
}
unset(
$matchpaths);
}
}
if ( !empty(
$pathimgs) ) {
if (
$norepetidos) {
return
array_unique($pathimgs);
} else {
return
$pathimgs;
}
} else {
return
false;
}
}
function
guarda_imagen ($img, $nombre){
$size =@getimagesize ($img);
if(
$size!=''){
$ancho = $size[0];
$alto = $size[1];
$thumbnail = ImageCreateTrueColor( $ancho, $alto );
switch (
$size['mime']){
case
'image/jpeg':
$tipo=".jpg";
$src_img = ImageCreateFromJPEG( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
ImageJPEG( $thumbnail, "images/".$nombre.".jpg" );
break;
case
'image/png':
$tipo=".png";
$src_img = imagecreatefrompng( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagepng ( $thumbnail, "images/".$nombre.".png" );
break;
case
'image/gif':
$tipo=".gif";
$src_img = imagecreatefromgif ( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagegif ( $thumbnail, "images/".$nombre.".gif" );
break;
default:
ImageDestroy( $thumbnail );
return
false;
}
ImageDestroy( $thumbnail );
return
$tipo;
}
else
return
false;

}
?> <html>
<head>
<title>Captura Imagenes de una URL</title>
</head>
<body>

<h1>Capturador de Imagenes</h1>
<form action="
<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
URL: <input type="text" name="url" value=""/>
<input type="submit" name="BOTON" value="Capturar" />
</form>
<?php
if ($_POST['BOTON']=='Capturar'){
$imagenes = @imagenesHTML($_POST['url']);
if (
$imagenes!=''){
if (!
is_dir('./images')) mkdir("images");
$i=0;
foreach (
$imagenes as $imagen){
$img = split ('/', $imagen);
if (
count($img)<=1){
$url= split('/', $_POST['url']);
$ori=$imagen;
$imagen='';
$tope=count($url)-1;
for (
$j=0; $j<$tope; $j++)
$imagen.=$url[$j].'/';
$imagen.=$ori;
}
$ok = guarda_imagen ($imagen, 'imagen_'.$i);
if (
$ok==false) echo 'no se ha podido descargar la imagen: '.$imagen.'<br/>';
else{
echo
'<img src="images/imagen_'.$i.$ok.'"/><br/>';
$i++;
}
}
}
}
?> </body>
</html>

domingo, 17 de octubre de 2010

PHP en Android

La empresa Bilbaina Irontec, utilizando la aplicación ASE (aplicación para Android desarrollada por Google gracias a la cual es posible editar y ejecutar scripts en tu terminal móvil) y añadiendo scripts propios, han desarrollado PFA (Php For Android).

Toda la información la tenéis en la página de la empresa y la documentación de la librería (scripts, manuales, etc) en la web www.phpforandroid.net.

Personalmente aún no poseo ningún terminal con Android, pero poco a poco me va convenciendo más y al final acabaré picando...

martes, 21 de septiembre de 2010

PDFs dinámicos con php

Buenas a todos, este es mi primera entrada en soy_informático y espero que les guste o al menos le sirva a alguien. Lo primero agradecer a geek que me deje participar en su blog, espero que no se arrepienta...

Para generar PDFs dinámicos en PHP hay 2 formas (si alguien conoce más formas serán bienvenidas):
1ª Usando la extensión PHP PDF Lib que es de pago y requiere instalación (y si no eres el administrador de tu servidor hosting ya puedes esperar).
2º Utilizando la librería class.ezpdf.php y alguna de sus extensiones como class.backgroundpdf.php, que son gratuitas y no requieren instalación (solo hay que descargarse las librerías y subirlas al servidor).

La segunda opción tarda un poco mas de procesar los pdfs, pero es muchísimo más sencilla de utilizar y ponerla a punto. Para muestra un botón.

PDF dinámico con imagen de logo corporativo en el centro:

1
<?php
2
include('class.ezpdf.php');
3 include(
'class.backgroundpdf.php');
4
5
$pdf = new backgroundPDF('a4', 'portrait', 'image', array('img'=>'logo.jpg', 'width'=>560, 'height'=>420, 'xpos'=>0, 'ypos'=>200));
6
$pdf->selectFont('./fonts/Helvetica.afm');
7
$pdf->ezText('PDF generado dinámicamente', 50);
8
$pdf->ezText('', 12);
9
$pdf->ezText('Ejemplo de PDF utilizando una imagen como Fondo.', 12);
10
$pdf->ezNewPage();
11
$pdf->ezText('Pagina 2', 50);
12
$pdf->ezStream();
13
?>



Edito: buscando me he dado cuenta que hay bastantes librerías más para generar pdf con php aquí os dejo una lista.
FPDF
TCPDF
FPDI
domPDF