Art*_*cto 45
function starts_with_upper($str) {
$chr = mb_substr ($str, 0, 1, "UTF-8");
return mb_strtolower($chr, "UTF-8") != $chr;
}
Run Code Online (Sandbox Code Playgroud)
请注意,mb_substr是正确隔离第一个字符所必需的.
Eug*_*gen 25
使用ctype_upper
的支票大写:
$a = array("Word", "word", "wOrd");
foreach($a as $w)
{
if(ctype_upper($w{0}))
{
print $w;
}
}
Run Code Online (Sandbox Code Playgroud)
mic*_*usa 14
我认为,preg_
与此处发布的其他解决方案相比,拨打电话是最直接、简洁和可靠的电话。
echo preg_match('~^\p{Lu}~u', $string) ? 'upper' : 'lower';
Run Code Online (Sandbox Code Playgroud)
我的模式分解:
~ # starting pattern delimiter
^ #match from the start of the input string
\p{Lu} #match exactly one uppercase letter (unicode safe)
~ #ending pattern delimiter
u #enable unicode matching
Run Code Online (Sandbox Code Playgroud)
请采取通知时ctype_
和< 'a'
失败,这种电池的测试。
代码:(演示)
$tests = ['âa', 'Bbbbb', 'Éé', 'iou', '??'];
foreach ($tests as $test) {
echo "\n{$test}:";
echo "\n\tPREG: " , preg_match('~^\p{Lu}~u', $test) ? 'upper' : 'lower';
echo "\n\tCTYPE: " , ctype_upper(mb_substr($test, 0, 1)) ? 'upper' : 'lower';
echo "\n\t< a: " , mb_substr($test, 0, 1) < 'a' ? 'upper' : 'lower';
$chr = mb_substr ($test, 0, 1, "UTF-8");
echo "\n\tMB: " , mb_strtoupper($chr, "UTF-8") == $chr ? 'upper' : 'lower';
}
Run Code Online (Sandbox Code Playgroud)
输出:
âa:
PREG: lower
CTYPE: lower
< a: lower
MB: lower
Bbbbb:
PREG: upper
CTYPE: upper
< a: upper
MB: upper
Éé: <-- trouble
PREG: upper
CTYPE: lower <-- uh oh
< a: lower <-- uh oh
MB: upper
iou:
PREG: lower
CTYPE: lower
< a: lower
MB: lower
??: <-- extended beyond question scope
PREG: upper <-- still holding up
CTYPE: lower
< a: lower
MB: upper <-- still holding up
Run Code Online (Sandbox Code Playgroud)
如果有人需要区分大写字母、小写字母和非字母,请参阅此帖子。
它可能将这个问题的范围扩展得太远,但是如果您的输入字符特别松散(它们可能不存在于Lu
可以处理的类别中),您可能需要检查第一个字符是否有大小写变体:
\p{L&} 或 \p{Cased_Letter}:存在大小写变体的字母(Ll、Lu 和 Lt 的组合)。
要包含带有SMALL
变体的罗马数字(“数字字母”),如有必要,您可以将该额外范围添加到模式中。
https://www.fileformat.info/info/unicode/category/Nl/list.htm
代码:(演示)
echo preg_match('~^[\p{Lu}\x{2160}-\x{216F}]~u', $test) ? 'upper' : 'not upper';
Run Code Online (Sandbox Code Playgroud)
Vid*_*nes 11
试过?
$str = 'the text to test';
if($str{0} === strtoupper($str{0})) {
echo 'yepp, its uppercase';
}
else{
echo 'nope, its not upper case';
}
Run Code Online (Sandbox Code Playgroud)
请注意,PHP提供了ctype
类似ctype_upper的系列。
您必须先通过setLocale()正确设置语言环境,才能使其与UTF-8一起使用。
例如,请参见有关ctype_alpha的注释。
用法:
if ( ctype_upper( $str[0] )) {
// deal with 1st char of $str is uppercase
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我不希望数字和其他人成为上角字符,所以我使用:
if(preg_match('/[A-Z]$/',$char)==true)
{
// this must be an upper char
echo $char
}
Run Code Online (Sandbox Code Playgroud)
用于Kohana 2自动加载器功能:
echo $char < 'a' ? 'uppercase' : 'lowercase';
Run Code Online (Sandbox Code Playgroud)
当字符串字符转换为整数时,它将计算为其ASCII编号.正如您在ASCII表中所知,首先有一些控制字符和其他字符.然后是拉丁字母表中的大写字母.然后是拉丁字母表中的小写字母.因此,您可以轻松检查字母的代码是小于还是大于小拉丁字符a
.
顺便说一句,这大约是具有正则表达式的解决方案的两倍.