Inicio Programación Top 10: Expresiones regulares más usadas en PHP

Top 10: Expresiones regulares más usadas en PHP

2 2364

1. Verificar y validar nombre de usuario

Teniendo en cuenta lo siguiente:

  • Debe empezar con una letra minúscula ó mayúscula.
  • Debe contener solo letras, números y guión bajo.
  • Debe contener entre 8 y 24 caracteres.
  • No debe finalizar en guión bajo.
function valid_name($username){
return preg_match("#^[a-z][\da-z_]{6,22}[a-z\d]\$#i", $username);
}

En acción:

$usernames = array(
"RoughGuide98", "_invalidUsername", "%423f@''#", "25UserName",
"I_am_valid_user", "I am not a valid user", "tooshort",
"ThisUserNameIsTooLongAndWontBeAccepted", "ThisIsTheRightSize"
);

foreach ($usernames as $name){
if(valid_name($name))
echo "$name - Ok<br />";
else
echo "$name - Unsuitable!<br />";
}

/* This produces...
RoughGuide98 - Ok
_invalidUsername - Unsuitable!
%423f@''# - Unsuitable!
25UserName - Unsuitable!
I_am_valid_user - Ok
I am not a valid user - Unsuitable!
short - Unsuitable!
ThisUserNameIsTooLongAndWontBeAccepted - Unsuitable!
ThisIsTheRightSize - Ok */

2. Verificar y validar fechas

Considerando que puede usarse los siguiente caracteres como separador de dígitos: "/", "-" y "."; además del siguiente formato DD-MM-YYYY.

function check_date($date){
$seperator = "[\/\-\.]";
return preg_match("#^(((0?[1-9]|1\d|2[0-8]){$seperator}(0?[1-9]|1[012])|(29|30){$seperator}(0?[13456789]|1[012])|31{$seperator}(0?[13578]|1[02])){$seperator}(19|[2-9]\d)\d{2}|29{$seperator}0?2{$seperator}((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$#", $date)==1?true:false;
}

En acción:

check_date("30.9.2005"); //valido
check_date("32.9.2005"); //invalido
check_date("29.1.2005"); //valido
check_date("29.2.2005"); //invalido

3. Validando dirección IP

IP’s válidas entre 0.0.0.0 y 255.255.255.255

function valid_ip($ip_address){
$val_0_to_255 = "(25[012345]|2[01234]\d|[01]?\d\d?)";
$pattern = "#^($val_0_to_255\.$val_0_to_255\.$val_0_to_255\.$val_0_to_255)$#";
return preg_match($pattern, $ip_address, $matches);
}

En acción:

valid_ip("0.0.0.255"); //valido
valid_ip("0.0.0.256"); //invalido

4. Validando correo electrónico (e-mail)

El formato válido es micuenta@proveedor.com

function checkEmail($email){
$reg = "#^(((([a-z\d][\.\-\+_]?)*)[a-z0-9])+)\@(((([a-z\d][\.\-_]?){0,62})[a-z\d])+)\.([a-z\d]{2,6})$#i";
return preg_match($reg, $email);
}

En acción:

checkEmail("robin@roughguidetophp.com"); //valido
checkEmail("not-an-email@address"); //invalido

5. Reemplazando dirección web texto por vínculo

Pasar de esto www.ribosomatic.com a esto www.ribosomatic.com.

function replace_urls($string){
$host = "([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]";
$port = "(:\d{1,})?";
$path = "(\/[^?<>\#\"\s]+)?";
$query = "(\?[^<>\#\"\s]+)?";
return preg_replace("#((ht|f)tps?:\/\/{$host}{$port}{$path}{$query})#i", "<a href='$1'>$1</a>", $string);
}

En acción:

$string = "Visita http://www.ribosomatic.com para encontrar articulos relacionados con AJAX, PHP, JavaScript, MySQL y mas.";
echo replace_urls($string);

/*
El resultado
Visita <a href="http://www.ribosomatic.com">http://www.ribosomatic.com</a>
para encontrar articulos relacionados con AJAX, PHP, JavaScript, MySQL y mas.

6. BBCode

Es común esto en foros y algunos CMS, consiste en modificar la apariencia del texto mediante pequeñas y personalizadas etiquetas. Ejemplo en algunos foros para colocar en negrita cierto texto se usa lo siguiente [b]Resaltar esto[/b]. Esto en PHP se logra de esta manera:

function BBcode($string) {

//get rid of all HTML tags
$string = strip_tags($string);

$patterns = array(
"bold" => "#\[b\](.*?)\[/b\]#is",
"italics" => "#\[i\](.*?)\[/i\]#is",
"underline" => "#\[u\](.*?)\[/u\]#is",
"link_title" => "#\[url=(.*?)](.*?)\[/url\]#i",
"link_basic" => "#\[url](.*?)\[/url\]#i",
"color" => "#\[color=(red|green|blue|yellow)\](.*?)\[/color\]#is"
);

$replacements = array(
"bold" => "<b>$1</b>",
"italics" => "<i>$1</i>",
"underline" => "<u>$1</u>",
"link_title" => "<a href=\"$1\">$2</a>",
"link_basic" => "<a href=\"$1\">$1</a>",
"color" => "<span style='color:$1;'>$2</span>"
);

return preg_replace($patterns, $replacements, $string);

}

En acción:

echo BBcode("[b]esta en negrita[/b]y un [url=http://www.google.com]enlace[/url]");
//<b>esta en negrita</b> y un <a href="http://www.google.com">enlace</a>

echo BBcode("Un texto en color [color=red]rojo[/color]");
//Un texto en color <span style="color: red;">rojo</span>

7. Verificando formato para Número telefonico, Código Postal, etc

8. Verificando número de tarjeta de crédito

9. Removiendo palabras inadecuadas

10. Evitar ciertos atributos ó etiquetas JavaScript

Vía The Rought Guide to PHP

Programador y Desarrollador Web. Administrador de RibosoMatic y Proyecto Yupy. Blogger y entusiasta de la tecnología, internet, software y tutoriales para desarrollo de aplicaciones para la web ....