-
-
Save DavidPeralvarez/719e76510f7ad2154bb59dbabf35f0cb to your computer and use it in GitHub Desktop.
Las expresiones regulares
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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