检查一个字符串是否至少有75%的字母是大写的

4
我正在使用PHP编写Bug跟踪软件,今天我在另一个Bug跟踪器中看到了这个: http://bugs.php.net/bug.php?id=12017 现在我想在我的软件中添加一个功能,该功能将阻止标题中至少75%的字符为大写字母。
我该如何实现呢? 谢谢,
P.S. CSS不起作用,因为例如如果您的标题中有单词“iPod”,它会变成“ipod”,这很糟糕 :)
1个回答

11
strlen(preg_replace('/[A-Z]/', '', $str)) / strlen($str) > 0.25

未经测试,但你应该能理解。


1
我在考虑整数除法问题。也许交换它们的位置?(原始长度/更改后的长度)> 4? - sisve
嗯,我假设 $str 在此之前已经被验证为非空。毕竟,这是用户提交的标题。 - Ignas R
1
而且除法不会引起任何问题。即使 / 运算符的两个操作数都是整数,结果也将是浮点数,除非它们能够整除。 - Ignas R
1
如果你(可能)处理的字母不仅限于a-zA-Z,例如丹麦语的Æ或西班牙语的Ñ,那么你应该查看pcre的unicode支持。属性\p{Lu}用于测试大写字符。请参见http://www.pcre.org/pcre.txt(“UTF-8和UNICODE PROPERTY SUPPORT”)。 - VolkerK
@Koning Baard XIV,不,当然不是,谢谢。这只是一小段显而易见的代码片段... - Ignas R
我更喜欢使用 preg_match('/[A-Z]{4,}+/',...,所以只检查大写字母而不是以大写字母开头。 - user956584

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接