Snippets Tricks http://snippets-tricks.org Para personas que escriben código Tue, 31 Aug 2010 17:29:26 +0000 en hourly 1 http://wordpress.org/?v=3.0.1 Licencia para Comentarhttp://snippets-tricks.org/comment-license-wordpress/ http://snippets-tricks.org/comment-license-wordpress/#comments Thu, 19 Aug 2010 02:31:01 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=206 Un buen consejo sería dar algunas recomendaciones a los usuarios a la hora escribir comentarios en nuestra instalación de WordPress.

Y una buen práctica de programación es hacerlo mediante el Hook comment_form para no modificar la plantilla comments.php y evitar problemas de funcionamiento.

Tan solo debemos pensar en las recomendaciones más adecuadas y escribir el siguiente snippet en el archivo functions.php.

function reglas_comentarios() {

	$html = "<ol>";
	$html .= "<li>Se amable</li>";
	$html .= "<li>Usa datos verdaderos</li>";
	$html .= "<li>No escribas Spam</li>";
	$html .= "</ol>";

	echo '<div class="reglas-comentarios">' . $html . '</div>';
}

add_action( 'comment_form', 'reglas_comentarios' );

O bien, podemos instalar el plugin Comment License que cuenta con una pequeña interfaz gráfica y hace todo el trabajo por nosotros.

Listo! las reglas se colocarán justo debajo del formulario.

]]>
http://snippets-tricks.org/comment-license-wordpress/feed/ 0
Redireccion 301 en WordPresshttp://snippets-tricks.org/redireccion-301-wordpress/ http://snippets-tricks.org/redireccion-301-wordpress/#comments Mon, 16 Aug 2010 20:41:35 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=202 Podemos crear un redireccionamiento desde nuestras Páginas, Post y Custom Post.

Esta técnica es adecuada cuando:

  • Es necesario actualizar la información de una publicación en una nueva, de este modo los usuarios serán redirigidos a la actualización.
  • Escribimos una publicación como reseña y al acceder, el post debe redirigirse a un sitio externo (Linkpost). Un ejemplo de esto: Digging into WordPress.

Esta técnica también puede sustituir a las plantillas de redireccionamiento como la que ofrece WooThemes que solo se limita en páginas.

Tan solo escribe el siguiente código dentro del archivo functions.php:

<?php

add_action( 'template_redirect', 'singular_redirect' );

function singular_redirect() {
	global $wp_query;

	if ( $wp_query->is_singular ) {
		$redirect = get_post_meta( $wp_query->post->ID, 'redirect', true);

		if ( $redirect )
			wp_redirect( $redirect, 301 );
	}
}

?>

Redirect 301

]]>
http://snippets-tricks.org/redireccion-301-wordpress/feed/ 0
Macros en NASMhttp://snippets-tricks.org/macros-nasm-ensamblador/ http://snippets-tricks.org/macros-nasm-ensamblador/#comments Tue, 10 Aug 2010 07:08:53 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=200 En Assembly podemos definir macros que faciliten la escritura de nuestros programas.

Las macros son como métodos ya que reciben parámetros y realizan una serie de instrucciones. Se definen de la siguiente manera:

%macro Nombre Cantidad-Parametros
	Instrucciones
%endmacro


Definiendo cuatro macros tenemos las siguientes para trabajar directamente en la consola:

%macro INT80 4
	mov	eax, %1
	mov	ebx, %2
	mov	ecx, %3
	mov	edx, %4
	int	80h
%endmacro

%macro LeerConsola 2
	INT80	__NR_read, 0, %1, %2
%endmacro

%macro EscribirConsola 2
	INT80	__NR_write, 1, %1, %2
%endmacro

%macro Salir 0
	INT80	__NR_exit, 0, 0, 0
%endmacro

Una buena práctica de programación es definir las macros y las constantes en un archivo independiente con la estención .inc. Esto es parecido a los archivos de cabecera de C.

Para incluir las macros en nuestro programa utilizamos %include "Archivo.inc".

Archivo Macros.inc

Este es el archivo que define las Constantes y Macros.

;
; Constantes
;
%define	__NR_exit	1
%define	__NR_read	3
%define	__NR_write	4

;
; Esta es una macro generica para invocar la interrupción 80.
; Recibe 4 parametros
;
%macro INT80 4
	mov	eax, %1
	mov	ebx, %2
	mov	ecx, %3
	mov	edx, %4
	int	80h
%endmacro

;
; Macros para Leer y Escribir en la Consola
;
%macro LeerConsola 2
	INT80	__NR_read, 0, %1, %2
%endmacro

%macro EscribirConsola 2
	INT80	__NR_write, 1, %1, %2
%endmacro

;
; Macro para dar el control al sistema
;
%macro Salir 0
	INT80	__NR_exit, 0, 0, 0
%endmacro

Archivo HolaMacros.S

En nuestro programa vamos a incluir el archivo Macros.inc.

; Incluimos las macros
%include "Macros.inc"

; Main
global main

; Datos con valor inicial
section .data

mensaje    db    'Hola Macros!', 0xa
length    equ    $ - mensaje

; Código
section .text

main:
	; Escribimos 'Hola Macros!' en la consola
	EscribirConsola	mensaje, length

	; Regresamos el control al sistema
	Salir
$ nasm -f elf HolaMacros.S
$ gcc HolaMacros.o -o HolaMacros
$ ./HolaMacros
Hola Macros!
]]>
http://snippets-tricks.org/macros-nasm-ensamblador/feed/ 0
La Clase Generica Tuplehttp://snippets-tricks.org/clase-generica-tuple/ http://snippets-tricks.org/clase-generica-tuple/#comments Sat, 07 Aug 2010 16:17:28 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=198 Tuple es un conjunto de clases genéricas para tener un conjunto de datos de diferentes tipos. Dicho de otro modo, podemos crear una variable t del tipo Tuple y almacenar datos numéricos, cadenas, etc.

El uso de Tuples es conveniente para regresar más de un tipo de dato desde un método.

La sintaxis de las clases son las siguientes:

public class Tuple <T1>
public class Tuple <T1, T2>
public class Tuple <T1, T2, T3>
public class Tuple <T1, T2, T3, T4>
public class Tuple <T1, T2, T3, T4, T5>
public class Tuple <T1, T2, T3, T4, T5, T6>
public class Tuple <T1, T2, T3, T4, T5, T6, T7>
public class Tuple <T1, T2, T3, T4, T5, T6, T7, TRest>

Podemos instanciar una clase Tuple de tres maneras distintas:

/** Con el constructor */
var t = new Tuple<int, string> (123, "Hola Tuple");

/** Con el método estático */
var t = Tuple.Create(123, "Hola Tuple");
Tuple<int, string> t = Tuple.Create(123, "Hola Tuple");

Cada clase cuenta con propiedades de solo-lectura llamadas Item1, Item2 para cada parametro respectivamente. Estos nos servirán para obtener los valores:

Console.WriteLine(t.Item1); // 123
Console.WriteLine(t.Item2.ToUpper()); // Hola Tuple

El ejemplo completo queda de la siguiente manera:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SnippetsTricks
{
	class Program
	{
		static void Main(string[] args)
		{
			var t = new Tuple<int, string>(123, "Hola Tuple");
			//var t = Tuple.Create(123, "Hola Tuple");
			//Tuple<int, string> t = Tuple.Create(123, "Hola Tuple");

			Console.WriteLine(t.Item1);
			Console.WriteLine(t.Item2.ToUpper());

			Console.ReadLine();
		}
	}
}
]]>
http://snippets-tricks.org/clase-generica-tuple/feed/ 0
Trazo de Imágenes en el servidor con PHPhttp://snippets-tricks.org/trazo-imagenes-servidor-php/ http://snippets-tricks.org/trazo-imagenes-servidor-php/#comments Fri, 06 Aug 2010 16:52:11 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=192 Para trazar imagenes debemos tener instalado el soporte GD2 para PHP. Esto lo podemos verificar con la función phpinfo().


Creación de la Imagen

Para comenzar a crear una imagen debemos utilizar la función imagecreate( $ancho, $altura ); que solo acepta dos argumentos para especificar el tamaño de la imagen en pixeles.

/*!
 * Establecemos las medidas de la imagen en pixeles
 */
$ancho = 400;
$altura = 400;

/*!
 * Creamos la imagen con las medidas especificadas
 */
$imagen = imagecreate( $ancho, $altura );

Podemos colocarle un color de fondo, para esto utilizamos la función imagecolorallocate( $imagen, $red, $green, $blue ) donde especificamos a que imagen le colocaremos el color de fondo y los tres argumentos restantes los valores RGB respectivamente.

/*!
 * Colocamos un color RGB de fondo
 */
$fondo = imagecolorallocate( $imagen, 200, 200, 255 );

Hemos creado una imagen y colocado un color de fondo, pero aún no se mostrará hasta especificar al navegador que enviaremos una imagen con la función header() y enviarla con la función imagepng().

/*!
 * Especificamos al navegador que enviarémos una imagen PNG
 */
header( 'Content-Type: image/png' );

/*!
 * Enviamos la Imagen al navegador
 */
imagepng( $imagen );

Y finalmente, debemos destruir la imagen.

/*!
 * Destruimos la Imagen
 */
imagedestroy( $imagen );

Nuestra imagen será la siguiente.

Dibujando una Carita

Para dibujar una carita feliz utilizaremos la función imagearc( $imagen, $centroX, $centroY, $ancho, $alto, $inicio, $final, $color ); los parametros $inicio y $final se especifican en grados.

El siguente código lo debemos escribir justo antes del código header( 'Content-Type: image/png' );

/** Color de línea */
$color = imagecolorallocate( $imagen, 255, 0, 0 );

/** Cabeza */
imagearc( $imagen, 200, 200, 200, 200, 0, 360, $color );

/** Ojo izquierdo */
imagearc( $imagen, 160, 180, 50, 50, 190, -10, $color );

/** Ojo derecho */
imagearc( $imagen, 240, 180, 50, 50, 190, -10, $color );

/** Sonrísa */
imagearc( $imagen, 200, 200, 150, 150, 30, 150, $color );

La carita sonriente serála siguiente.

Agregando Texto

Para agregar texto a la imagen vamos a utilizar la función imagestring( $imagen, $letra, $x_posicion, $y_posicion, $texto, $color ).

En el segundo parámetro de la función especificamos el la letra que vamos autilizar por medio de un valor numérico (1 – 5), estas letras ya estan integradas en el paquete gráfico. Podemos cargar nuestras propias fuentes con la función imageloadfont.

/** Saludo */
$texto = "Hola GD!";
$letra = 5;

imagestring( $imagen, $letra, 170, 350, $texto, $color_texto );

Código completo

Finalmente nuestro código queda de la siguiente manera.

/*!
 * Establecemos las medidas de la imagen en pixeles
 */
$ancho = 400;
$altura = 400;

/*!
 * Creamos la imagen con las medidas especificadas
 */
$imagen = imagecreate( $ancho, $altura );

/*!
 * Colocamos un color RGB de fondo
 */
$fondo = imagecolorallocate( $imagen, 200, 200, 255 );

/*!
 * Carita felíz
 */

/** Color de línea */
$color = imagecolorallocate( $imagen, 255, 0, 0 );

/** Cara */
imagearc( $imagen, 200, 200, 200, 200, 0, 360, $color );
imagearc( $imagen, 160, 180, 50, 50, 190, -10, $color );
imagearc( $imagen, 240, 180, 50, 50, 190, -10, $color );
imagearc( $imagen, 200, 200, 150, 150, 30, 150, $color );

/** Color de texto */
$color_texto = imagecolorallocate( $imagen, 255, 0, 255 );

/** Saludo */
$texto = "Hola GD!";
$letra = 5;

imagestring( $imagen, $letra, 170, 350, $texto, $color_texto );

/*!
 * Especificamos al navegador que enviarémos una imagen PNG y
 * envíamos la imagen al navegador
 */
header( 'Content-Type: image/png' );
imagepng( $imagen );

/*!
 * Destruimos la Imagen
 */
imagedestroy( $imagen );
]]>
http://snippets-tricks.org/trazo-imagenes-servidor-php/feed/ 0
Muestra los Posts Type en tu Sidebarhttp://snippets-tricks.org/muestra-posts-type-sidebar/ http://snippets-tricks.org/muestra-posts-type-sidebar/#comments Sat, 31 Jul 2010 23:57:22 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=190 Muestra tus Custom Post Type más recientes de una forma muy simple en tu Sidebar.

Función

La función solo tiene el argumento $args = '' que es mixto. Esto quiere decir que vamos a utilizar los parámetros como cadena o como un arreglo.

$number // Cantidad de Posts Type a mostrar (Mínimo 1 y Máximo 15)
$post_type // Post Type a mostrar

Tan solo agrega la siguiente función en tu archivo function.php.

function listing_posts_type( $args = '' ) {

	$defaults = array(
		'number' => 5,
		'post_type' => 'post'
	);

	$r = wp_parse_args( $args, $defaults );

	if ( !$number = (int) $r['number'] )
		$number = 10;

	else if ( $number < 1 )
		$number = 1;

	else if ( $number > 15 )
		$number = 15;

	$r_query = new WP_Query( array( 'post_type' => $r['post_type'],
									'showposts' => $number,
									'nopaging' => 0,
									'post_status' => 'publish',
									'caller_get_posts' => 1
							) );

	if ( $r_query->have_posts() ) :

		while ( $r_query->have_posts() ) :
			$r_query->the_post(); ?>
			<li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr( get_the_title() ); ?>"><?php the_title(); ?></a></li> <?php

		endwhile;

		wp_reset_postdata();

	endif;
}

Uso

<?php listing_posts_type(); ?>

Vamos a utilizar el Post Type Videos de ejemplos en la publicación: Custom Post Type.

<h3>Screencast</h3>
<ul>
<?php listing_posts_type( 'post_type=videos' ); ?>
</ul>
<h3>Screencast</h3>
<ul>
<?php listing_posts_type( array( 'post_type' => 'videos' ) ); ?>
</ul>
Listing Post Type

Ejemplo en Twenty Ten

]]>
http://snippets-tricks.org/muestra-posts-type-sidebar/feed/ 0
El comando printf de bashhttp://snippets-tricks.org/comando-printf-bash/ http://snippets-tricks.org/comando-printf-bash/#comments Wed, 28 Jul 2010 01:21:23 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=182 El comando se deriva de la función printf del lenguaje de programación C y tiene un proposito similar pero con algunas diferencias. Su sintaxis es:

printf FORMATO ARGUMENTOS ...


La cadena formato puede contener:

  • Caracteres ordinarios: Estos se imprimen en la salida estandar sin cambio alguno.
  • Formatos específicos: Estos caracteres son filtros que son reemplazados por los argumentos.
  • Literales de caracteres (Escape Sequences): Estos caracteres se convierten en caracteres que ellos mismos representan.

Formatos específicos

Los formatos son letras que contienen el signo % al inicio y son reemplazados por los argumentos.

  • %d, %i: Imprimen un valor decimal
  • %u: Imprime un valor decimal sin signo
  • %f, %F: Imprimen un valor del tipo punto flotante
  • %e, %E: Imprimen un valor del tipo doble con notación científica
  • %g, %G: Imprimen un valor del tipo doble
  • %x, %X: Imprimen un valor hexadecimal
  • %o: Imprime un valor octal sin signo
  • %s: Imprime una cadena
  • %c: Imprime un caractér
  • %%: Imprime el signo %

Literales de caracteres

Son caractéres únicos que normalmente están compuestos por un carácter entre comillas.

  • \': Comilla simple
  • \": Comilla doble
  • \\: Barra invertida
  • \0: Null
  • \a: Alerta
  • \b: Retroceso
  • \f: Avance de página
  • \n: Nueva línea
  • \r: Retorno
  • \t: Tabulación horizontal
  • \v: Tabulación vertical
  • \nnn: Un caractér específico por uno a tres números octales
  • \xHH: Un caractér especifico por uno o dos números hexadecimales

Ejemplos

Transformar los colores RGB a Hexadecimal

$ printf "Color: #%02x%02x%02x;\n" 255 0 0
Color: #ff0000;
$ printf "Color: #%02x%02x%02x;\n" 0 255 0
Color: #00ff00;
$ printf "Color: #%02x%02x%02x;\n" 0 0 255
Color: #0000ff;

Reporte

Ahora vamos a crear un Reporte de Ventas. Para esto vamos a crear un archivo llamado Reporte.sh donde vamos a escribir el siguiente código:

#!/bin/bash

# Construir la división
divider========================
divider=$divider$divider

# Formatos para printf
header="\n %-10s %10s %10s %10s\n"
format=" %-10s %9.2f %10d %10.2f\n"

# ncho del reporte
totalwidth=44

# Imprime las categorias
printf "$header" Artículo Precio Cantidad Total

# Imprime la división
printf "%$totalwidth.${totalwidth}s\n" "$divider"

# Imprime los artículos
printf "$format" \
	Mesa 100 4 400 \
	Silla 209.99 1 209.99 \
	Comedor 315 2 630

Tal vez sea necesario cambiar los permisos del script.

$ chmod 777 Reporte.sh
$ ./Reporte.sh

 Artículo      Precio   Cantidad      Total
============================================
 Mesa          100.00          4     400.00
 Silla         209.99          1     209.99
 Comedor       315.00          2     630.00
]]>
http://snippets-tricks.org/comando-printf-bash/feed/ 0
La clase DNS de .NET Frameworkhttp://snippets-tricks.org/clase-dns-net-framework/ http://snippets-tricks.org/clase-dns-net-framework/#comments Sat, 24 Jul 2010 09:20:54 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=179 .NET Framework cuenta con la clase Dns que nor permite recuperar información acerca de un host específico del Sistema de nombres de dominio.

Para trabajar con la información de los DNS necesitaremos el espacio de nombres System.Net que proporciona una interfaz de programación sencilla de los protocolos de la red.

El espacio de nombres lo llamamos de la siguente manera:

using System;
using System.Net;

Obteniendo las IP de un dominio

Para obtener la lista de las direccines IP de un determinado dominio utilizamos el método GetHostAddresses.

IPAddress[] GetHostAddresses( string hostNameOrAddress );

Ejemplos

/* IP que utiliza Snippets-Tricks */
foreach( IPAddress lista in Dns.GetHostAddresses( "snippets-tricks.org" ) )
	Console.WriteLine( lista.ToString() );
70.32.94.48
/* Lista de las IP que utiliza Google */
foreach( IPAddress lista in Dns.GetHostAddresses( "google.com" ) )
	Console.WriteLine( lista.ToString() );
66.102.7.104
66.102.7.99

Obteniendo el Nombre del Servidor

Para obterner Nombre del Host se utiliza el método GetHostEntry.

IPHostEntry GetHostEntry( IPAddress address );
IPHostEntry GetHostEntry( string hostNameOrAddress );

Ejemplos

IPHostEntry dominio = Dns.GetHostEntry( "70.32.94.48" );
Console.WriteLine( dominio.HostName );
IPHostEntry dominio = Dns.GetHostEntry( "snippets-tricks.org" );
Console.WriteLine( dominio.HostName );

Ya sea con la IP o con el nombre de dominio, podemos obtener el nombre del host:

plus.snippets-tricks.org

GetHostEntry acepta como parámetro el objeto IPAddress. En este caso debemos especificar la dirección IP como un arregleo del tipo byte.

IPAddress address = new IPAddress ( new byte[] { 66, 102, 7 ,99 } );
IPHostEntry dominio = Dns.GetHostEntry( address );
Console.WriteLine( dominio.HostName );

Código de Ejemplo

using System;
using System.Net;

namespace Ejemplos {

	class DNS {

		public static void Main(string[] args) {

			/* Obteniendo las IP de un dominio */
			foreach( IPAddress lista in Dns.GetHostAddresses( "google.com" ) )
				Console.WriteLine( lista.ToString() );

			/* Obteniendo el Nombre del Servidor */
			IPAddress address = new IPAddress ( new byte[] { 66, 102, 7 ,99 } );
			IPHostEntry dominio = Dns.GetHostEntry( address );
			Console.WriteLine( dominio.HostName );
		}
	}
}
$ gmcs "/out:DNS.exe" "/r:System.dll" /t:exe "DNS.cs"
$ mono DNS.exe
66.102.7.104
66.102.7.99
lax04s01-in-f99.1e100.net
]]>
http://snippets-tricks.org/clase-dns-net-framework/feed/ 0
Crea Shortlinks con Bit.ly, TinyURL & PHPhttp://snippets-tricks.org/shortlinks-bitly-tinyurl-php/ http://snippets-tricks.org/shortlinks-bitly-tinyurl-php/#comments Fri, 23 Jul 2010 05:40:04 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=177 En las redes sociales se suele escribir de forma corta, normalmente estamos en la cantidad de caracteres por lo que sean hecho famosos los servicios para crear Shortlink o Enlaces cortos.

He creado dos funciones para crear Shortlinks utilizando los servicios Bit.ly y TinyURL.

Función: cURL

/**
 * Función cURL
 *
 * @param string $url
 * @return string
 */
function get_contents_curl( $url ) {
	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_HEADER, 0 );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $ch, CURLOPT_URL, $url );

	$data = curl_exec( $ch );

	if ( $data === FALSE ) {
		$data =  "Error cURL: " . curl_error( $ch );
	}

	curl_close( $ch );

	return $data;
}

Servicio: Bit.ly

Para poder utilizar el servicio de Bit.ly es necesario crear una cuenta ya que necesitaremos un Nombre de usuario y una App Key que encontraremos en la dirección http://bit.ly/account/.

/**
 * Bit.ly
 *
 * @uses get_contents_curl( $url )
 *
 * @param string $url
 * @param string $login
 * @param string $appkey
 * @return string bit.ly
 */
function getBity( $url, $login, $appkey ) {
	$bitly = 'http://api.bit.ly/v3/shorten?login=' . $login . '&apiKey=' . $appkey . '&longUrl=' . urlencode( $url ) . '&format=xml';

	$response = get_contents_curl( $bitly );

	$xml = simplexml_load_string( $response );
	return $xml->data->url;
}
// El nombre de usuario y app key son inventados.
echo getBitly( 'http://snippets-tricks.org/shortlinks-bitly-tinyurl-php/', 'maquero', 'R_p3579otha25k96348iu49y6549po5ggg' );

Con este servicio obtendré el siguiente enlace:

http://bit.ly/boTJDo

Este servicio nos permite personalizar los Shortlinks con nuestros propio dominios. Por ejemplo: Los enlaces de Snippets-Tricks utilizan el dominio snipt.me para crear Shortlinks, en este caso Bit.ly asignara el siguiente enlace:

http://snipt.me/bzmp4j

Servicio: TinyURL

/**
 * TinyURL
 *
 * @uses get_contents_curl( $url )
 *
 * @param string $url
 * @return string tinyurl
 */
function getTinyUrl( $url ) {
	$tinyurl = get_contents_curl( "http://tinyurl.com/api-create.php?url=" . $url );

	return $tinyurl;
}

Este servicio es más simple ya que solo necesitamos especificar la URL:

echo getTinyUrl( 'http://snippets-tricks.org/shortlinks-bitly-tinyurl-php/' );

Con este servicio obtendremos el Shortlink:

http://tinyurl.com/28qtqvo
]]>
http://snippets-tricks.org/shortlinks-bitly-tinyurl-php/feed/ 0
Verifica y Limpia una URLhttp://snippets-tricks.org/verifica-limpia-url-php/ http://snippets-tricks.org/verifica-limpia-url-php/#comments Mon, 19 Jul 2010 01:42:11 +0000 Luis Alberto Ochoa http://snippets-tricks.org/?p=170 Es común que en algunos formularios de registro se pida ingresar una Dirección URL y en estos casos el usuario puede estar confundido al ingresar este dato ya que pueden ser dos opciones:

  1. Indicar únicamente el dominio. Ej: snippets-tricks.org
  2. Indicar la dirección completa: Ej: http://snippets-tricks.org

El siguiente Snippet se encarga de arreglar la Dirección URL que el usuario ingrese sin importar su formato.

/**
 * URL Cleaner
 *
 * @param string $url
 * @param bool $echo = true
 * @return string
 */
function cleanURL( $url, $echo = true ) {

	$url = preg_replace( '|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url );
	$url = str_replace( ';//', '://', $url );

	if ( strpos( $url, ':' ) === false && substr( $url, 0, 1 ) != '/' )
		$url = 'http://' . $url;

	if ( !$echo )
		return $url;

	echo $url;
}

Su uso es muy simple:

cleanURL( 'http://snippets-tricks.org' );

cleanURL( 'http;//snippets-tricks.org' );

echo cleanURL( 'snippets-tricks.org', false );

La salida será la siguiente:

http://snippets-tricks.org

http://snippets-tricks.org

http://snippets-tricks.org
]]>
http://snippets-tricks.org/verifica-limpia-url-php/feed/ 0