Skip to content

Instantly share code, notes, and snippets.

@DavidPeralvarez
Created April 25, 2019 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DavidPeralvarez/719e76510f7ad2154bb59dbabf35f0cb to your computer and use it in GitHub Desktop.
Save DavidPeralvarez/719e76510f7ad2154bb59dbabf35f0cb to your computer and use it in GitHub Desktop.
Las expresiones regulares
<?php
/*
Plugin Name: Ejemplos validación
Description: Ejemplos validación
*/
add_action( 'admin_menu', 'dp_ev_create_menu' );
function dp_ev_create_menu(){
add_menu_page( 'Ejemplos validación', 'Validación', 'manage_options', 'dp_ev_main_menu', 'dp_ev_main_menu_settings', 'dashicons-thumbs-up', 1 );
}
function dp_ev_main_menu_settings(){
echo '<div class="wrap">';
echo "<h1>Ejemplos de validación</h1>";
/**
* Suponemos que estamos recibiendo los datos por $_POST, $_GET, $_REQUEST
*/
// isset: https://php.net/isset
$var1 = '';
if( isset($var1) ):
echo "<p>Variable definida</p>";
else:
echo "<p>Variable no definida</p>";
endif;
dp_ev_line_break();
// empty: https://php.net/empty
$var2 = '';
if( empty($var2) ):
echo "<p>Variable vacía</p>";
else:
echo "<p>Variable no vacía</p>";
endif;
dp_ev_line_break();
// is_int: https://www.php.net/manual/es/function.is-int.php
// is_bool: https://www.php.net/manual/es/function.is-bool.php
// is_string: https://www.php.net/manual/es/function.is-string.php
// is_array: https://www.php.net/manual/es/function.is-array.php
// is_numeric: https://www.php.net/manual/es/function.is-numeric.php
$numero = '123';
if( is_numeric($numero) ):
echo "<p>Variable numérica</p>";
else:
echo "<p>Variable no numérica</p>";
endif;
dp_ev_line_break();
// ctype_alnum: https://www.php.net/manual/es/function.ctype-alnum.php
$alnum = 'AbCd1zyZ9';
if( ctype_alnum($alnum) ):
echo "<p>La cadena sólo tiene letras o dígitos</p>";
else:
echo "<p>La cadena no es alfanumérica</p>";
endif;
dp_ev_line_break();
// ctype_alpha: https://www.php.net/manual/es/function.ctype-alpha.php
$alpha = 'KjgWZC';
if( ctype_alpha($alpha) ):
echo "<p>La cadena sólo tiene letras</p>";
else:
echo "<p>La cadena no sólo tiene letras</p>";
endif;
dp_ev_line_break();
// strlen: https://php.net/strlen
$codigo_postal = '08203';
if( strlen($codigo_postal) == 5 ):
echo "<p>Código postal con longitud correcta</p>";
else:
echo "<p>Código postal con longitud incorrecta</p>";
endif;
dp_ev_line_break();
// strpos: https://php.net/strpos
$cadena_texto = 'Mi perro es sólo duerme y come.';
$palabra_clave = 'Mi';
$posicion = strpos($cadena_texto, $palabra_clave);
if( $posicion === false ):
echo "<p>No se ha encontrado la palabra $palabra_clave</p>";
else:
echo "<p>No puedes introducir la palabra $palabra_clave</p>";
endif;
dp_ev_line_break();
// count: https://php.net/count
$tabla = array('queso','jamón','tomate','calamares');
if( count($tabla) == 4 ):
echo "<p>Hay 4 elementos</p>";
else:
echo "<p>No hay 4 elementos</p>";
endif;
dp_ev_line_break();
// in_array: https://php.net/in_array
// Es case-sensitive
// White-listing
$valor_recibido = 'ROJO';
$valores_posibles = array('rojo', 'amarillo', 'verde', 1);
if( in_array($valor_recibido,$valores_posibles, true) ):
echo "<p>Valor recibido encontrado</p>";
else:
echo "<p>Valor recibido no encontrado</p>";
endif;
dp_ev_line_break();
// is_email: https://developer.wordpress.org/reference/functions/is_email/
$email = 'n.o.m.b.r.e@dominio.com';
if( is_email($email) ):
echo "<p>Correo válido</p>";
else:
echo "<p>Correo inválido</p>";
endif;
dp_ev_line_break();
// esc_url_raw: https://developer.wordpress.org/reference/functions/esc_url_raw/
// Validar url
$url = 'https://developer.wordpress.org/reference/functions/esc_url_raw/';
if( esc_url_raw($url) === $url ):
echo "<p>URL válida</p>";
else:
echo "<p>URL inválida</p>";
endif;
dp_ev_line_break();
// username_exists: https://developer.wordpress.org/reference/functions/username_exists/
$username = 'DavidPeralvarezz';
if ( username_exists($username) ):
echo "<p>Ese nombre de usuario ya ha sido elegido</p>";
else:
echo "<p>Nombre de usuario disponible</p>";
endif;
// CONDITIONAL TAGS
// https://developer.wordpress.org/themes/basics/conditional-tags/
dp_ev_line_break();
/**
* Expresiones regulares (patrones conocidos)
* preg_match: https://www.php.net/manual/es/function.preg-match.php
*/
// Validar un slug en WordPress
$slug = 'ejemplo-de-entrada-1';
$pattern = '/^[a-z0-9-]+$/';
if( preg_match($pattern,$slug) ):
echo "<p>Es un slug correcto</p>";
else:
echo "<p>Es un slug incorrecto</p>";
endif;
dp_ev_line_break();
// Validar un IBAN (número de cuenta)
// Secuencias de escape: https://www.php.net/manual/es/regexp.reference.escape.php
$iban = 'ES1234567890987654321234';
//if( preg_match('/^[A-Z]{2}[0-9]{22}$/',$iban) ):
if( preg_match('/^[A-Z]{2}\d{22}$/',$iban) ):
echo "<p>Es un IBAN correcto</p>";
else:
echo "<p>Es un IBAN incorrecto</p>";
endif;
dp_ev_line_break();
// Validar un número de serie
$serial_number = 'AG26-8C-H&G5-12R';
if( preg_match('/^[A-Z0-9]{4}-[A-Z0-9]{2}-[A-Z0-9\$]{4}-[A-Z0-9]{3}$/',$serial_number) ):
echo "<p>Es un número de serie correcto</p>";
else:
echo "<p>Es un número de serie incorrecto</p>";
endif;
dp_ev_line_break();
// Validar una fecha de nacimiento 'dd/mm/YYYY'
$fecha = '28/99/1988';
//if( preg_match('/^\d{2}\/\d{2}\/\d{4}$/',$fecha) ):
if( preg_match('#^\d{2}/\d{2}/\d{4}$#',$fecha) ):
echo "<p>Es un formato de fecha correcto</p>";
else:
echo "<p>Es un formato de fecha incorrecto</p>";
endif;
// Validar que sea correcta
// strtotime: https://www.php.net/manual/es/function.strtotime.php
// http://www.webtips.es/strtotime-y-las-fechas-en-php/
$fecha = str_replace("/","-",$fecha);
$timestamp = strtotime($fecha);
var_dump($timestamp);
if(!$timestamp):
echo "<p>Fecha no real</p>";
else:
echo "<p>Fecha real</p>";
endif;
// Validar que sea una fecha pasada
// time: https://www.php.net/manual/es/function.time.php
var_dump(time());
if($timestamp <= time()):
echo "<p>Fecha pasada</p>";
else:
echo "<p>Fecha futura</p>";
endif;
echo '</div>';
}
function dp_ev_line_break(){
echo "<hr>";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment