UTF-8の発音区別符号付きのテキストもあります。このテキストの最初の文字が大文字か小文字かを確認したいと思います。これを行う方法?
preg_
呼び出しは、ここに掲載されている他のソリューションと比較して、最も直接的で簡潔で信頼性の高い呼び出しです。
echo preg_match('~^\p{Lu}~u', $string) ? 'upper' : 'lower';
私のパターンの内訳:
~ # 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
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';
}
出力:
â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
大文字、小文字、および非文字を区別する必要がある場合は、 this post を参照してください。
function starts_with_upper($str) {
$chr = mb_substr ($str, 0, 1, "UTF-8");
return mb_strtolower($chr, "UTF-8") != $chr;
}
最初の文字を正しく分離するにはmb_substrが必要であることに注意してください。
使用する ctype_upper
大文字をチェックする場合:
$a = array("Word", "Word", "Word");
foreach($a as $w)
{
if(ctype_upper($w{0}))
{
print $w;
}
}
試した?
$str = 'the text to test';
if($str{0} === strtoupper($str{0})) {
echo 'yepp, its uppercase';
}
else{
echo 'nope, its not upper case';
}
Kohana 2オートローダー機能で使用されるように:
echo $char < 'a' ? 'uppercase' : 'lowercase';
文字列文字が整数にキャストされると、ASCII数に評価されます。ASCIIテーブルで最初にわかるように、いくつかの制御文字があります。ラテンアルファベットの大文字、ラテンアルファベットの小文字このように、文字のコードが小さなラテン文字a
よりも小さいか大きいかを簡単に確認できます。
ところで、これは正規表現を使用したソリューションよりも約2倍高速です。
数字などを上位の文字にしたくないので、以下を使用します。
if(preg_match('/[A-Z]$/',$char)==true)
{
// this must be an upper char
echo $char
}
PHPは ctype_upper のようなctype
ファミリーを提供します。
UTF-8で動作するようにするには、最初に setLocale() でロケールを正しく設定する必要があります。
たとえば、 ctype_alpha のコメントを参照してください。
使用法:
if ( ctype_upper( $str[0] )) {
// deal with 1st char of $str is uppercase
}
どうですか:
if (ucfirst($string) == $string) {dosomething();}
Nice関数で使用したい場合は、これを使用しました。
function _is_upper ($in_string)
{
return($in_string === strtoupper($in_string) ? true : false);
}
その後、電話するだけです。
if (_is_upper($mystring))
{
// Do....
}
if(ctype_upper(&value)){
echo 'uppercase';
}
else {
echo 'not upper case';
}