ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Php Expresiones Regulares


Enviado por   •  5 de Octubre de 2012  •  522 Palabras (3 Páginas)  •  433 Visitas

Página 1 de 3

¿PHP Puro o RegExps?

Por Omar G. Soto Fortuño

Tabla de contenido:

1. Introducción

2. Ejemplo usando PHP Puro

3. Ejemplo usando RegExps

4. Prueba de rendimiento

5. Conclusión

1. Introducción

En este manual intentare mostrarles lo lentas que son las RegExps; las regexps son muy útiles, las uso mucho pero siempre es bueno saber sus defectos y este es su lentitud por lo tanto intentare demostrarles con php puro (sin regexps) lo lento que van las regexps. En este FAQ mostrare el ejemplo de un script que tapa las ips, por ejemplo, esta es la IP sin proteger: 234.23.12.57, y esta la IP protegida por el script: 234.23.**.**. Espero que sea de su interés. (Las regexps economizan mucha mas memoria)

2. Ejemplo usando PHP Puro

Codigo PHP:

function protect_ip1($ip) { $ip2long = ip2long($ip); if ($ip2long == -1 || $ip2long === FALSE) { return false; } else { $part = explode('.', $ip); foreach($part as $key=>$num) { if($key >= 2) { $part[$key] = str_repeat('*', strlen($num)); } } return implode('.', $part); } }

Como podemos ver en este código tenemos una función llamada protect_ip1 que se encarga de tapar la IP usando PHP Puro (sin regexps). En una prueba de rendimiento (al final pondré el código) este código se tardo 3 segundos en ejecutarse 100,000 veces. (Este código uso 1272bytes de la memoria)

3. Ejemplo usando RegExps

Código PHP:

function protect_ip2($ip) { $ip2long = ip2long($ip); if ($ip2long == -1 || $ip2long === FALSE) { return false; } else { return preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/sie', "'\\1.\\2.' . str_repeat('*', strlen('\\3')) . '.' . str_repeat('*', strlen('\\4'))", $ip); } }

En este código ya se ve todo mas lindo, con regexps. Únicamente que en esta función hago 2 cosas, verificar que la IP sea valida y ejecutar el preg_replace. Sin embargo esta función es mucho más lenta que la de PHP Puro ya que la prueba de rendimiento refleja que ejecutando este código 100,000 veces tarda 3 segundos mas que la de PHP Puro ósea 4 segundos. (Este código uso 408bytes de la memoria)

4. Prueba de rendimiento

Código PHP:

$mem = memory_get_usage(); $comienzo = time(); for($i = 0; $i < 100000; $i++) { protect_ip1('234.23.12.57'); } echo time() - $comienzo . 'segs - PHP Puro<br />';

...

Descargar como (para miembros actualizados)  txt (3.3 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com