Eliminar código Javascript malicioso con expresiones regulares en php
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;
}
//ejm:
echo limpiarTags(«este código es malicioso <script>alert(‘hola!’)</script>»);
Limpiar palabras groseras con expresiones regulares en php
Esta expresión regular filtra las palabras groseras que algunos de nuestros usuarios podrían poner.
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);
}
//ejm:
echo deswear(«marcianito es un idiota»);
Remplazar Url por un link con php
function convertirURL($url)
{
$host = «( [a-z\d] [-a-z\d] * [a-z\d] \.)+ [a-z] [-a-z\d] * [a-z] «;
$port = «(:\d{1,})?»;
$path = «(\/ [^?<>\#\»\s] +)?»;
$query = «(\? [^<>\#\»\s] +)?»;
$reg = «#((ht|f)tps?:\/\/{$host}{$port}{$path}{$query})#i»;
return preg_replace($reg, «<a href=’$1′>$1</a>», $url);
}
//ejm:
echo convertirURL(» visita http://www.google.com»);
Validar Numero de tarjeta de credito Expresiones regulares en php
Al realizar una aplicación de comercio electrónico es muy importante validar los distintos tipos de tarjetas de credito que hay, esta es una simple función para validarla, solo tiene que llamar a la función getTipoTarjeta(“4111 1111 1111 1111?);
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» => «(4\d{12}(?:\d{3})?)»,
«amex» => «(3 [47] \d{13})»,
«jcb» => «(35 [2-8] [89] \d\d\d{10})»,
«maestro» => «((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)»,
«solo» => «((?:6334|6767)\d{12}(?:\d\d)?\d?)»,
«mastercard» => «(5 [1-5] \d{14})»,
«switch» => «(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\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»);
Validar Numero de Telefono con expresiones regulares en php
El formato utilizado seria así: 000 000 0000,(000)-000-0000. Donde los primeros 3 números serian el código de tu País.
function validarTelefono($numero)
{
$reg = «#^\(?\d{3}\)? [\s\.-] ?\d{3} [\s\.-] ?\d{4}$#»;
return preg_match($reg, $numero);
}
//ejm:
if(validarTelefono(«(511)-311-4541»))
{
echo «telefono valido»;
}
else
{
echo «telefono invalido»;
}
Validar Dirección IP con expresiones regulares en php
Valida que una dirección IP este dentro del rango 0.0.0.0 a 255.255.255.255
function validarIP($ip)
{
$val_0_to_255 = «(25 [012345] |2 [01234] \d| [01] ?\d\d?)»;
$reg = «#^($val_0_to_255\.$val_0_to_255\.$val_0_to_255\.$val_0_to_255)$#»;
return preg_match($reg, $ip, $matches);
}
//ejm:
if(validarIP(«192.168.1.1»))
{
echo «IP valida»;
}
else
{
echo «IP invalida»;
}
Validar Fecha con expresiones regulares en PHP
Esta validación acepta la fecha en formato DD-MM-YYYY, con separadores (/),(-) y (.);
function validarFecha($fecha){
$sep = » [\/\-\.] «;
$req = «#^(((0? [1-9] |1\d|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);
}
//ejm:
if(validarFecha(«12/01/2009»))
{
echo «fecha valida»;
}
else
{
echo «fecha invalida»;
}
Validar Dirección Email con expresiones regulares en php
Con este código validamos un email con expresines regulares en php,
function validarEmail($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);
}
//ejm:
if(validarEmail(«cesar@gmail.com»))
{
echo «email valido»;
}
else
{
echo «email invalido»;
}
tambien pueden descargar la clase EAValidator desde phpclasses.org realizada por mi..
Ejemplos de Expresiones Regulares en PHP, POSIX
<?php
// Devuelve true si "abc" se encuentra en cualquier lugar de $cadena.
ereg("abc", $cadena);// Devuelve true si "abc" se encuentra al comienzo de $cadena.
ereg("^abc", $cadena);// Devuelve true si "abc" se encuentra al final de $cadena.
ereg("abc$", $cadena);// Devuelve true si el navegador del cliente es Netscape 2, 3 o MSIE 3.
eregi("(ozilla.[23]|MSIE.3)", $_SERVER["HTTP_USER_AGENT"]);// Coloca tres palabras separadas por un espacio dento de $registros[1], $registros[2] y $registros[3].
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $cadena, $registros);// Pone una etiqueta <br /> al principio de $cadena.
$cadena = ereg_replace("^", "<br />", $cadena);// Pone una etiqueta <br /> al final de $cadena.
$cadena = ereg_replace("$", "<br />", $cadena);// Se deshace de cualquier carácter de nueva línea en $cadena.
$cadena = ereg_replace("\n", "", $cadena);
?>