У меня также есть тексты в UTF-8 с диакритическими символами, и я хотел бы проверить, есть ли первая буква этого текста в верхнем регистре или в нижнем регистре. Как это сделать?
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
.
Кстати, это примерно в два раза быстрее, чем решение с регулярными выражениями.
Я не хотел, чтобы числа и другие были верхним символом, поэтому я использую:
if(preg_match('/[AZ]$/',$char)==true) { // this must be an upper char echo $char }
Обратите внимание: PHP предоставляет семейство ctype
например ctype_upper .
Сначала вы должны установить локаль с помощью setLocale (), чтобы заставить ее работать с UTF-8.
См. Комментарий к ctype_alpha, например.
Применение:
if ( ctype_upper( $str[0] )) { // deal with 1st char of $str is uppercase }
Как насчет:
if (ucfirst($string) == $string) {dosomething();}
if(ctype_upper(&value)){ echo 'uppercase'; } else { echo 'not upper case'; }
Если вы хотите, чтобы это было в хорошей функции, я использовал это:
function _is_upper ($in_string) { return($in_string === strtoupper($in_string) ? true : false); }
Тогда просто позвоните ..
if (_is_upper($mystring)) { // Do.... }