Artículo
|
Expresiones regulares más utilizadas en PHP |
Vamos a ver diez de las expresiones regulares más utilizadas por desarrolladores en PHP. Son expresiones que se pueden modificar y adaptar a las necesidades de cada usuario.
Validar nombre de usuario
Esta validación se ha seguido siguiendo las siguientes reglas:
Validar una dirección de email
Validar fechas
La fecha tendrá como formato DD-MM-YYYY, con separadores /, - y .
Validar dirección IP
Valida una ip que esté dentro del rango 0.0.0.0 – 255.255.255.255
Validar número de teléfono
El formato del número sería así: 000 000 0000, (000)-000-0000, donde los tres primeros números serían el código de tu país.
Validar números de tarjetas de crédito
Reemplazar URL por un link
Limpiar palabras malsonantes
Eliminar código Javascript
Reemplazar BBCode por HTML
Via: craftyman.net
Validar nombre de usuario
Esta validación se ha seguido siguiendo las siguientes reglas:
- Nombre de usuario empieza con minúsculas o mayúsculas.
- Solo puede contener letras, números o guiones.
- Su longitud es entre 8 y 24 caracteres.
- El usuario no puede terminar con guión bajo.
function validarUsuario($nombre)
{
return preg_match("#^[a-z][da-z_]{6,22}[a-zd]$#i", $nombre);
}
Validar una dirección de email
function validarEmail($email)
{
$reg = "#^(((([a-zd][.-+_]?)*)[a-z0-9])+)@(((([a-zd][.-_]?){0,62})[a-zd])+).([a-zd]{2,6})$#i";
return preg_match($reg, $email);
}
Validar fechas
La fecha tendrá como formato DD-MM-YYYY, con separadores /, - y .
function validarFecha($fecha){
$sep = "[/-.]";
$req = "#^(((0?[1-9]|1d|2[0-8]){$sep}(0?[1-9]|1[012])|(29|30){$sep}(0?[13456789]|1[012])|31{$sep}(0?[13578]|1[02])){$sep}(19|[2-9]d)d{2}|29{$sep}0?2{$sep}((19|[2-9]d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$#";
return preg_match($reg, $fecha);
}
Validar dirección IP
Valida una ip que esté dentro del rango 0.0.0.0 – 255.255.255.255
function validarIP($ip)
{
$val_0_to_255 = "(25[012345]|2[01234]d|[01]?dd?)";
$reg = "#^($val_0_to_255.$val_0_to_255.$val_0_to_255.$val_0_to_255)$#";
return preg_match($reg, $ip, $matches);
}
Validar número de teléfono
El formato del número sería así: 000 000 0000, (000)-000-0000, donde los tres primeros números serían el código de tu país.
function validarTelefono($numero)
{
$reg = "#^(?d{3})?[s.-]?d{3}[s.-]?d{4}$#";
return preg_match($reg, $numero);
}
Validar números de tarjetas de crédito
function validarTarjeta($num_tarjeta)
{
$num_tarjeta = preg_replace("/D|s/", "", $num_tarjeta);
$length = strlen($num_tarjeta);
$parity = $length % 2;
$sum=0;
for($i=0; $i<$length; $i++)
{
$digit = $num_tarjeta[$i];
if ($i%2==$parity) $digit=$digit*2;
if ($digit>9) $digit=$digit-9;
$sum=$sum+$digit;
}
return ($sum%10==0);
}
function getTipoTarjeta($cc)
{
$cards = array(
"visa" => "(4d{12}(?:d{3})?)",
"amex" => "(3[47]d{13})",
"jcb" => "(35[2-8][89]ddd{10})",
"maestro" => "((?:5020|5038|6304|6579|6761)d{12}(?:dd)?)",
"solo" => "((?:6334|6767)d{12}(?:dd)?d?)",
"mastercard" => "(5[1-5]d{14})",
"switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)d{12})|(?:(?:564182|633110)d{10})(dd)?d?)",
);
$names = array("Visa", "American Express", "JCB", "Maestro", "Solo", "Mastercard", "Switch");
$matches = array();
$pattern = "#^(?:".implode("|", $cards).")$#";
$result = preg_match($pattern, str_replace(" ", "", $cc), $matches);
if($result > 0)
{
$result = (validarTarjeta($cc))?1:0;
}
return ($result>0)?$names[sizeof($matches)-2]:false;
}
//ejm:
echo getTipoTarjeta("4111 1111 1111 1111");
Reemplazar URL por un link
function convertirURL($url)
{
$host = "([a-zd][-a-zd]*[a-zd].)+[a-z][-a-zd]*[a-z]";
$port = "(:d{1,})?";
$path = "(/[^?<>#"s]+)?";
$query = "(?[^<>#"s]+)?";
$reg = "#((ht|f)tps?://{$host}{$port}{$path}{$query})#i";
return preg_replace($reg, "$1", $url);
}
Limpiar palabras malsonantes
function deswear($string){
function prep_regexp_array(&$item){
$item = "#$item#i";
}
function stars($matches){
return substr($matches[0], 0, 1).str_repeat("*", strlen($matches[0])-1);
}
$swears = array("idiota", "invecil");
array_walk($swears, "prep_regexp_array");
return preg_replace_callback($swears, "stars", $string);
}
Eliminar código Javascript
function limpiarTags($source, $tags = null)
{
function clean($matched)
{
$attribs =
"javascript:|onclick|ondblclick|onmousedown|onmouseup|onmouseover|".
"onmousemove|onmouseout|onkeypress|onkeydown|onkeyup|".
"onload|class|id|src|style";
$quot = ""|'|`";
$stripAttrib = "' ($attribs)s*=s*($quot)(.*?)(\2)'i";
$clean = stripslashes($matched[0]);
$clean = preg_replace($stripAttrib, '', $clean);
return $clean;
}
$allowedTags='<a><br><b><i><br><li><ol><p><strong><u><ul>';
$clean = strip_tags($source, $allowedTags);
$clean = preg_replace_callback('#<(.*?)>#', "clean", $source);
return $source;
}
Reemplazar BBCode por HTML
function convertirBBcode($string)
{
$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);
}
Via: craftyman.net
![]() |
Publicado por: angel carrero |
|
|
Comentarios
Últimas noticias
Últimos artículos














































