2012-04-19 2 views
0

가끔씩 프로젝트의 모든 문자를 대문자 형식으로 사용해야하는 약어 (즉, 이니셜)가 있습니다.str_replace는 작업의 일부만 수행합니다.

예 :

str_replace("Mcg","MCG",$string); 

이렇게하면 문제가 해결됩니다. 그러나 때로는이 문자열에는 단어의 시작 부분 인 약어가 포함됩니다.

예 :

str_replace("Wa","WA",$string) 

분명히 "원하지 않는" "WAnt"으로 변경 될 것입니다. 2 ~ 3 자의 단어 만 변경할 수있는 방법이 있습니까? 문자열을 배열로 폭발시키고 그곳으로 가려고 생각했습니다. 아니면 활용해야하는 더 쉬운 기능이 있습니까?

답변

0

word boundaries에 중지 정규식, 즉 같은 것을 사용 'WA'는 공백, 쉼표, 점, 개행 문자 또는 아무 문자도없는 한 왼쪽 또는 오른쪽 모두 (그리고 나는 거기에 몇 문자가 빠졌음).

이 다음과 같은 경우가있을 수 있기 때문에, 공백 (또는 공간) 필터링보다 낫다 :

He wants -> He wants 
WaT -> WaT 
Wa -> WA 
Do be do be do Wa. -> Do be do be do WA. 
Some Wa -> Some WA 
Foo Wa Bar -> Foo WA Bar 
+0

감사합니다. CodeCaster - 치료법처럼 작동합니다! – user1267980

1

efficieny이 문제가 아닌 경우에 당신은 할 수 있습니다 :

preg_replace('/(\b)Wa(\b)/', 'WA', $string); 

이와 '워싱턴'의 모든 항목을 대체합니다

preg_replace("/\bWa\b/","WA",$string) 
+0

덕분에 codaddict, 내가 찾던 그냥 뭐. – user1267980