2013-08-06 55 views
0

Я хочу проверить введенные пользователем символы в нижнем и верхнем регистре. Если это нижний регистр, я хочу изменить его на верхний регистр. Если это верхний регистр, я хочу изменить его на нижний регистр.Изменить регистр в php

<?php 
$string=$_POST['string']; 
$arr=str_split($string); 
$arrlen=strlen($string); 
$arrcaps=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," "); 
$arrsmall=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," "); 
//print_r($arrsmall); 

for($i=0;$i<$arrlen;$i++) 
{ 
for($j=0;$j<27;$j++) 
{ 
if($arr[$i]==$arrcaps[$j]) 
{ 
echo $arrsmall[$j]; 
} 
} 
for($k=0;$k<27;$k++) 
{ 
if($arr[$i]==$arrsmall[$j]) 
{ 
echo $arrcaps[$j]; 
} 
} 
} 
?> 

Выполняю вышеуказанную программу. он меняет символы верхнего регистра на нижний регистр. Но это не меняет строчные буквы в верхнем регистре.

Где я сделал ошибку. решите эту проблему.

Заранее спасибо ...

+0

вы хотите, чтобы все чартеры, чтобы изменить, чтобы быть в верхнем регистре/нижний регистр? дайте ab пример того, что вы хотите –

+1

Отступ в коде будет приятным. – ciruvan

+1

вы можете использовать php-функцию strtolower и strtoupper. –

ответ

1

if($arr[$i]==$arrsmall[$j]) { echo $arrcaps[$j]; }

должен быть

if($arr[$i]==$arrsmall[$k]) { echo $arrcaps[$k]; }

дело решается

+0

Спасибо большое ... Это работает ... –

2

использование

bool ctype_upper($string) — Check for uppercase character(s) 

if (ctype_upper($letter)) 
{ 
    strtolower($letter); 
} 
else 
{ 
    strtolower($letter); 
} 
2

Если вы только строчными или только в верхнем регистре:

$result = (strcmp(strtoupper($string),$string))?strtoupper($string):strtolower($string); 
+0

Это тоже крутая идея ... –

3
$switched = strtolower($string)^strtoupper($string)^$string; 

Это может быть использовано в качестве функции:

echo changecase('a');//A 
echo changecase('A');//a 

function changecase($str){ 
    return strtolower($str)^strtoupper($str)^$str; 
} 
+0

Спасибо за эту классную идею ... –

1
<?php 
$string=$_POST['string']; 
print strtolower($str)^strtoupper($str)^$str; 

Я говорил наш сайт StackOverflow в другую ссылку ... Я попробовал это. Это дает ответ ... Спасибо всем за поддержку ...

+0

дубликат ответа @ ironcito –

+0

Я думаю, что это самый лучший способ для моей проблемы ... –

1
$word = "AlPhAbEtIcIsE"; 
$word = strtr(
    $word, 
    array_combine(
     array_merge(range('A','Z'),range('a','z')), 
     array_merge(range('a','z'),range('A','Z')) 
    ) 
); 
var_dump($word); 
+0

Спасибо за ваше решение ... –

Смежные вопросы