2013-10-17 2 views
0

어떤 구문에서나 모든 단어를 개별적으로 추출하고 싶습니다. 움라우트와 같은 특수 문자도 일치시켜야합니다.preg_match_all을 사용하여 모든 단어 찾기

preg_match_all('/\b([a-zA-ZäöüåÄÖÜÅ]*)\b/', $string, $matches); 

그러나, 이것은 나에게 중복 빈 일치를 제공합니다

현재, 나는 이것이 사용합니다. 예 : "zu spät"는

을 반환합니다.
Array ([0] => Array ([0] => zu [1] => [2] => spät [3] =>) 
     [1] => Array ([0] => zu [1] => [2] => spät [3] =>)) 

"임의의 문자"와 일치하는 올바른 표현식은 무엇입니까? 더블 랭킹과 빈 퀘스트에 대해 무엇을 할 수 있습니까?

+0

아마도 유니 코드에 해당하는 특수 문자를 사용해야합니다. 비록 그 구현의 확실하지. 빠른 Google이 효과가있을 수 있습니다. –

답변

2

당신이 시도 할 수 있습니다 :

\p{L} 어떤 문자와 일치
preg_match_all('/\b\p{L}+\b/u', $string, $matches); 

.

코드 샘플에서 "double in"결과를 얻습니다. 첫 번째는 전체 패턴이고 두 번째는 캡처 그룹입니다. 이것이 캡처 그룹을 제거한 이유입니다. 비어있는 결과를 피하기 위해 + 수량 한정자 (1 회 이상)로 * 수량 한정 기호를 0 번 이상 대체했습니다.

관련 문제