2010-02-24 7 views
3

PHP를 사용하여 양식 항목을 MySQL 데이터베이스에 삽입합니다. 사용자가 텍스트를 모두 대문자로 입력하는 경우가 있습니다. 첫 글자 만 대문자로 바꿀 수있는 방법이 있습니까? ucwords(strtolower($word))은 대문자로 시작하지 않았으므로 첫 번째 문자를 국한시키고 싶지 않기 때문에 저에게 적합하지 않습니다.PHP는 모두 대문자를 제거합니다

내 관심사는 사람들이 성을 제출할 때입니다. 대부분의 사람들은 올바르게 제출하지만 일부는 모든 대문자로 제출합니다. 모두 대문자 인 경우 ucwords(strtolower($word))과 동일하게 작동해야하지만 누군가가 De la Rosa로 이름을 제출하면 De La Rosa로 변경하지 않기를 바랍니다.

+1

어떻게 캡해야하는 경우의 예와 때 브라이언이 질문을 업데이트 DAV가 대답 게시하기 전에이 – Jayrox

답변

4
<?php 

function ucwordsreplace($matches) { 
    return ucwords(strtolower($matches[0])); 
} 

$original = "some UPPERCASE words GO HERE"; 
$fixed = preg_replace_callback('/\b[A-Z]+\b/', "ucwordsreplace", $original); 

echo $fixed; // some Uppercase words Go Here 

정규식은 다음과 (대문자 양쪽 단어 경계와 문자의 수)가 첫 번째로 대체 텍스트를 반환 정의 기능에 이들 각각을 통과 완전히 대문자 단어 만 일치 대문자로 된 문자.

UPPERCA $ E와 같은 것을 방지하려면 다른 기호를 정규식에 추가하거나 소문자가 아닌 문자를 모두 일치시킬 수도 있습니다 ([A-Z] 대신 [^a-z] 사용).

0

나는

.. 당신이 표시되는 기능이 정확하다고 생각하지만 당신의 정확한 요구 사항 ..

ucwords 그렇지 U 원하는 경우

<?php 
$foo = 'hello world!'; 
$foo = ucwords($foo);    // Hello World! 

$bar = 'HELLO WORLD!'; 
$bar = ucwords($bar);    // HELLO WORLD! 
$bar = ucwords(strtolower($bar)); // Hello World! 
?> 

의 사용에 대한 예에서 다음은 무엇인가 첫 번째 문자는 대문자이어야하며 문자열의 첫 번째 문자는 모두 대문자가되도록 이어야하며 ucfirst() 함수를 사용해보십시오.

+0

를 야해에 대한! – Vijay

0

ucfirst(strtolower($word));

+1

u가 게시물을 읽었습니까? – useless