Как определить, содержит ли строка 1 прописную букву в PHP

Не удалось найти функцию для этого. Я предполагаю, что мне нужно использовать регулярное выражение?

Я пытаюсь сделать html-переадресацию в php в случаях, когда в URL-адресе содержится как минимум 1 буква верхнего регистра.

example: http://www.domain.com/Michael_Jordan необходимо перенаправить на http://www.domain.com/Michael_Jordan - проблема только в том, что я не могу найти script, чтобы определить, существует ли хотя бы одна заглавная буква.

Ответы

Ответ 1

Некоторое регулярное выражение должно уметь работать, вы можете использовать preg_match и [A-Z]

if(preg_match('/[A-Z]/', $domain)){
 // There is one upper
}

Ответ 2

if (strtolower($url) != $url){
  //etc...

Ответ 3

Вы также можете попробовать это

if (!ctype_lower($string)) {
    // there is at least une uppercase character
}

не уверен, что это более эффективно, чем другие два предложенных метода.

Ответ 4

preg_match_all('%\p{Lu}%usD', 'aA,éÁ,eE,éÉ,iI,íÍ,oO,óÓ,öÖ,őŐ,uU,úÚ,üÜ,űŰ', $m);
echo '<pre>';
var_dump($m);
echo '</pre>';

Протестировано с помощью венгерских символов utf-8, [A-Z] предназначен только для latin1.

Ответ 5

Вот более простой пример:

$mydir = "C:\Users\John" ;

print preg_match('/^[A-Z]:\.*/', $mydir, $match )."\n" ;
print $match[0]. " preg match \n" ;

Выдает:

1
C: preg match

Это говорит о том, что parens не нужны - для одного совпадения, по крайней мере,

Посмотрите, чтобы это было более конкретным для вашего приложения: PHP для поиска в верхнем + нижнем случае смешанных слов в строках?