Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

298
Vistas
Compruebe si una cadena es en su mayoría TODO MAYÚSCULAS en PHP

¿Cuál es la mejor manera de ver si una cadena contiene principalmente letras mayúsculas?

La cadena también puede contener símbolos, espacios, números, por lo que aún querría que devolviera verdadero en esos casos.

Por ejemplo: puedo verificar si una cadena está TODO EN MAYÚSCULAS con algo similar a esto:

 if (strtoupper($str) == $str) { /* its true */ }

Pero, ¿qué sucede si necesitamos determinar si una cadena tiene un 80 % o más de TODAS MAYÚSCULAS?

¡LOS 15 ZORROS MARRONES PEQUEÑOS SALTAN AL ESTABLO EN LLAMAS! -> cierto

¡Los 15 pequeños zorros marrones SALTAN al granero en llamas! -> falso

Puedo recorrer todos los caracteres, revisándolos individualmente, pero eso parece un poco inútil en mi humilde opinión.

¿Hay una mejor manera?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

$countUppercase = strlen(preg_replace('/[^AZ]+/', '', $str)); // or: mb_strlen(...)

... y luego dividir por strlen($str)

over 4 years ago · Santiago Trujillo Denunciar

0

Un bucle for simple debería dar el mejor rendimiento

 $numUpper = 0; for ($i = 0; $i < strlen($str); $i++){ if (ctype_upper($str[$i])) { $numUpper++; } } return $numUpper;
over 4 years ago · Santiago Trujillo Denunciar

0

Otra opción podría ser usar preg_match_all , que devuelve el número de coincidencias de patrones completos y mb_strlen .

El patrón \p{Lu} coincide con una letra mayúscula que tiene una variante en minúscula.

Por ejemplo:

 function mostlyUpperInString($s, $threshold) { return preg_match_all("/\p{Lu}/u", $s) / mb_strlen($s) > $threshold; } function moreUpperThanLower($s, $threshold) { return preg_match_all("/\p{Lu}/u", $s) / preg_match_all("/\P{Lu}/u", $s) > $threshold; } $strings = [ "THE 15 SMALL BROWN FOXES JUMP INTO THE BURNING barn!", "The 15 Small Brown Foxes JUMP Into the Burning Barn!" ]; foreach ($strings as $str) { echo $str . " -> 80% mostlyUpperInString: ". (mostlyUpperInString($str, 0.8) ? "true" : "false") . PHP_EOL; echo $str . " -> 80% moreUpperThanLower: ". (moreUpperThanLower($str, 0.8) ? "true" : "false") . PHP_EOL; echo PHP_EOL; }

Producción

 THE 15 SMALL BROWN FOXES JUMP INTO THE BURNING barn! -> 80% mostlyUpperInString: false THE 15 SMALL BROWN FOXES JUMP INTO THE BURNING barn! -> 80% moreUpperThanLower: true The 15 Small Brown Foxes JUMP Into the Burning Barn! -> 80% mostlyUpperInString: false The 15 Small Brown Foxes JUMP Into the Burning Barn! -> 80% moreUpperThanLower: false

Vea una demostración de PHP .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda