AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.
En el ejercicio de php de hoy, vamos a tratar de crear una función que compruebe si una frase o palabra está en minúsculas o mayúsculas. Para realizar esta comprobación se tendrán que utilizar operadores a nivel de bit. Esto vienen siendo; and, or, not … y esas cosas. No hay que utilizarlos todos, solo los necesarios para completar la tarea que estamos buscando.
Comprobar si una frase está en mayúsculas o minúsculas con PHP
Bueno, dado el enunciado … veamos el código …
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Práctica 24</title>
</head>
<body>
<!--
Ejemplo:
El caracter 'a' en ASCII es 1100001
El caracter 'A' es 1000001
Mayúsculas y minúsculas se diferencias solo en un bit, el bit que equivale a 32
32 a nivel de bit: 0100000
Si se aplica un or a nivel de bit a un caracter en mayúscula se
obtiene ese caracter en minúscula
(65) 1000001 -> 'A'
0100000 -> 32
------------------------OR
(97) 1100001 -> ('a' | 32) -> 'a'
'A' | 32 = 'a', y así para el resto de letras
-->
<?php
/**
* Evalúa si una cadena está en minúscula o no
* ord() convierte un caracter a su valor ASCII.
*/
function compMayusculas($cadena) {
//Se recorre la cadena de 0 hasta el tamaño total de la cadena $cadena
for ($i = 0; $i < strlen($cadena); $i++) {
//Se convierte cada caracter a ASCII con ord
$caracter = ord($cadena[$i]);
//echo ($caracter | 32);
//echo $caracter;
//Si a alguno de los carácteres aplicándole un or
//con el numero 32 no coincide
//consigo mismo significa que está en mayúsculas y se devuelve
//false
if ($caracter != ($caracter | 32)) {
return false;
}
}
//Si nunca falla signinfica que la cadena está completamente en
// minúsculas
return true;
}
$cadena = 'los pelos del sobaco no son comestibles'; //frase a comprobar
?>
<hr>
<?php
echo "En la cadena " . $cadena . " ...";
//Comprobamos si compMayusculas devuelve true o false
if (compMayusculas($cadena)) {
echo 'todas las letras están en minúsculas';
} else {
echo 'hay una o más letras mayúsculas';
}
?>
<hr>
</body>
</html>
Este ejercicio realiza una comprobación básica. Posiblemente no sea la mejor de las maneras de comprobar si unas palabras están en mayúsculas o minúsculas, pero es una buena forma de empezar a realizar ejercicios con PHP.