Skip to content

Commit a60a1ac

Browse files
committed
#16 - php
1 parent c02af37 commit a60a1ac

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<?php
2+
/**
3+
* Ejercicio de Expresiones Regulares en PHP
4+
*
5+
* Este script demuestra el uso de expresiones regulares en PHP para:
6+
* 1. Extraer números de un texto
7+
* 2. Validar direcciones de email
8+
* 3. Validar números de teléfono
9+
* 4. Validar URLs
10+
*/
11+
12+
// Texto de ejemplo para probar las expresiones regulares
13+
$textoEjemplo = "Hola, tengo 25 años y mi número es 123-456-789. " .
14+
"Puedes contactarme al +34 611 222 333 o por email a [email protected]. " .
15+
"Visita mi web https://www.ejemplo.com para más información. " .
16+
"Hay 42 razones para usar expresiones regulares y 100 formas de aplicarlas.";
17+
18+
/**
19+
* 1. Función para encontrar y extraer todos los números de un texto
20+
*
21+
* La expresión regular \b\d+\b significa:
22+
* \b - límite de palabra
23+
* \d+ - uno o más dígitos
24+
* \b - otro límite de palabra
25+
*
26+
* @param string $texto El texto del que extraer los números
27+
* @return array Array con todos los números encontrados
28+
*/
29+
function extraerNumeros($texto) {
30+
$patron = '/\b\d+\b/';
31+
preg_match_all($patron, $texto, $coincidencias);
32+
return $coincidencias[0];
33+
}
34+
35+
/**
36+
* 2. Función para validar un email
37+
*
38+
* La expresión regular verifica:
39+
* ^ - inicio de la cadena
40+
* [\w\.-]+ - uno o más caracteres de palabra, puntos o guiones
41+
* @ - símbolo @
42+
* [\w\.-]+ - uno o más caracteres de palabra, puntos o guiones
43+
* \. - un punto literal
44+
* [\w\.-]+ - dominio de nivel superior
45+
* $ - fin de la cadena
46+
*
47+
* @param string $email El email a validar
48+
* @return bool true si el email es válido, false si no
49+
*/
50+
function validarEmail($email) {
51+
$patron = '/^[\w\.-]+@[\w\.-]+\.\w+$/';
52+
return preg_match($patron, $email) === 1;
53+
}
54+
55+
/**
56+
* 3. Función para validar un número de teléfono
57+
*
58+
* Acepta formatos:
59+
* - 123-456-789
60+
* - +34 611 222 333
61+
*
62+
* @param string $telefono El número de teléfono a validar
63+
* @return bool true si el teléfono es válido, false si no
64+
*/
65+
function validarTelefono($telefono) {
66+
$patron = '/^(\+\d{1,3}\s?)?(\d{3}[-\s]?){2}\d{3}$/';
67+
return preg_match($patron, $telefono) === 1;
68+
}
69+
70+
/**
71+
* 4. Función para validar una URL
72+
*
73+
* Verifica URLs que:
74+
* - Comienzan con http:// o https://
75+
* - Pueden tener www. (opcional)
76+
* - Tienen un dominio y una extensión válida
77+
*
78+
* @param string $url La URL a validar
79+
* @return bool true si la URL es válida, false si no
80+
*/
81+
function validarURL($url) {
82+
$patron = '/^https?:\/\/(www\.)?[\w\.-]+\.\w{2,}$/';
83+
return preg_match($patron, $url) === 1;
84+
}
85+
86+
// PRUEBAS
87+
88+
echo "=== PRUEBAS DE EXPRESIONES REGULARES ===\n\n";
89+
90+
// 1. Extraer números
91+
echo "1. Números encontrados:\n";
92+
$numeros = extraerNumeros($textoEjemplo);
93+
foreach ($numeros as $numero) {
94+
echo "- $numero\n";
95+
}
96+
97+
// 2. Validar emails
98+
echo "\n2. Validación de emails:\n";
99+
$emails = ['[email protected]', 'email_invalido.com', '[email protected]'];
100+
foreach ($emails as $email) {
101+
$esValido = validarEmail($email) ? 'válido' : 'inválido';
102+
echo "- $email es $esValido\n";
103+
}
104+
105+
// 3. Validar números de teléfono
106+
echo "\n3. Validación de números de teléfono:\n";
107+
$telefonos = ['123-456-789', '+34 611 222 333', '1234', '999-999-999'];
108+
foreach ($telefonos as $telefono) {
109+
$esValido = validarTelefono($telefono) ? 'válido' : 'inválido';
110+
echo "- $telefono es $esValido\n";
111+
}
112+
113+
// 4. Validar URLs
114+
echo "\n4. Validación de URLs:\n";
115+
$urls = ['https://www.ejemplo.com', 'http://ejemplo', 'https://dominio.es'];
116+
foreach ($urls as $url) {
117+
$esValido = validarURL($url) ? 'válida' : 'inválida';
118+
echo "- $url es $esValido\n";
119+
}
120+
121+
?>

0 commit comments

Comments
 (0)