2012-02-15 8 views
3

문장이나 문자열에서 CAPS 단어를 얻는 방법이나 기능이 있습니까? 예 : $str = "ABOUT US who we are" 대문자로 된 단어 "ABOUT US"을 어떻게 식별하여 얻을 수 있으며 작은 글자 단어 "who we are"으로 구분할 수 있습니까? 그래서 출력은 $str1 = "ABOUT US"$str2 = "who we are" ... 감사합니다!PHP에서 문자열의 대문자로 된 단어를 확인하고 얻으십시오

+0

'우리가 누구인지'에 대해 어떻게 생각하십니까? –

+0

전혀 문제가되지 않습니다. 모든 문자열을 검사하게하는 원인은 항상 모든 CAPS 단어가 첫 줄에 있고 작은 글자 단어가 다음에 나오는 구조입니다. "CAPS WORDS FIRST 작은 단어 다음" – Tinker

답변

6

당신은 그것을 위해 정규 표현식을 사용할 수 있습니다

preg_match_all('/\b([A-Z]+)\b/', $str, $matches); 

는 소문자 단어를 일치 시키려면, 이것을 사용 :

preg_match_all('/\b([a-z]+)\b/', $str, $matches2); 

는 그런 다음 문자열을 구축하는 등 implode() 등의 기능을 사용할 수 있습니다.

+0

저는 정규식에 익숙하지 않습니다. (좀 더 배우기 과정에서) 그러나 나는 그가 공간을 포함하고 싶어한다고 생각한다. (그가 "우리"를 원한다면 "미국"또는 "미국에 대해서"가 아님) 추가하기가 너무 어려워서는 안된다. 나는 그것을 편집하고 싶지 않다. –

+2

그는 이것에 대해 명확하지 않았습니다. – ThiefMaster

+0

문자열은 항상 첫 번째 항목에있는 모든 대문자를 가지며 예제와 같이 소문자 단어가 옆에 표시됩니다. 따라서 테스트 할 문자열은 항상 다음과 같습니다. "모든 대문자는 모두 소문자로 다음 번에"이므로, 그것을 수행하는 방법에 대한 조건 만있는 경우 두 개를 분리하는 것이 더 쉬울 것입니다. 물론 각 분리 된 문자열 앞뒤의 공백은 무시됩니다. – Tinker

1

정규 표현식 솔루션 외에도 PHP에는 문자열이 모두 대문자인지 테스트하는 neato 함수 ctype_upper()이 있습니다. 한 번에 한 문자 씩 구문 분석 할 텍스트를 제공 할 수 있습니다. true를 반환하면 문자를 $str1에 추가하십시오. false를 반환하면 문자열의 나머지 부분을 $str2에 추가합니다.

유연성을 높이기 위해 배열에 $ str1 및 $ str2 요소를 만들 수 있습니다. 그런 다음 구문 분석중인 텍스트가 대소 문자를 바꿀 때마다 새 요소를 추가 할 수 있습니다. 예를 들어 "HELLO AND welcome to STACKOVERFLOW bro" 텍스트는 ["HELLO AND", "welcome to", "STACKOVERFLOW", "bro"]으로 끝납니다. 또는 텍스트의 대문자 및 소문자 청크에 대해 별도의 배열을 가질 수 있습니다.

관련 문제