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);
?>