2011-11-22 5 views
4

으로 단어 나 단어의 조합을 교체합니다. 그러나 대체는 문자열이 단어 인 경우에만 실행되어야합니다 :내가 대체 단어에 대한지도가 PHP의 정규 표현식

  • 다른 단어의 중간에 있지 않습니다. 텍스트 1은 다른 토큰의 일부이기 때문에 대체 1으로 대체되지 않습니다.
  • 구분 기호는 저장해야하지만 구분 기호 앞뒤의 단어는 바꾸어야합니다.

나는 단어 정규 표현식으로 문자열을 분할 할 수 있지만, 몇 토큰 값이 매핑 될 때이 작동하지 않습니다 (같은 word2 ㅋ). 그것 자체가 그 일을 할 것입니다,하지만 당신은 단어 경계 \ B를 보길 원하는 것 할 경우

+3

확실하지. – Corbin

답변

5
$map = array( 'foo' => 'FOO', 
       'over' => 'OVER'); 

// get the keys. 
$keys = array_keys($map); 

// get the values. 
$values = array_values($map); 

// surround each key in word boundary and regex delimiter 
// also escape any regex metachar in the key 
foreach($keys as &$key) { 
     $key = '/\b'.preg_quote($key).'\b/'; 
} 

// input string.  
$str = 'Hi foo over the foobar in stackoverflow'; 

// do the replacement using preg_replace     
$str = preg_replace($keys,$values,$str); 

See it