2010-05-28 5 views
4

가정한다 I이문자열의 특정 문자를 바꾸려면 어떻게해야합니까? =

SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE 

같은 문자열을 가지고 있고이

SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE 

으로 바꿀 필요 그 때문에 I "는 [1000137c] 문제 후 단어 사이에"_ "로 공간을 바꿔야 "와"[ "앞에. PHP에서 어떻게 할 수 있습니까?

감사합니다.

답변

3
$s = "SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE"; 
$a = split(" = ",$s,2); 
$b = split(' \[',$a[1],2); 
$s = $a[0] . ' = ' . strtr($b[0],' ','_') . ' [' . $b[1]; 

print_r($s); 

는 생산 :

SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE 
+0

감사합니다. 작동 시키려고합니다. 문자열에 "="가 하나 이상있을 수 있습니다. 우리가 확실히 알고있는 유일한 것은 이름이 "[1000137c] SOMETHING ="뒤에오고, 1000137c는 반복하지 않는다는 것입니다. –

+0

"="부분 문자열이 없으면 작동합니다. 그들이 그것을 끝내면 모든 것이 잘 작동 할 것입니다. –

+0

흠 ... 전에 "="가 있다면 어떨까요? –

0

$의 도착의 = 승/^ [\ "과 같이 정규식을 사용하여 다음

str_replace(" ", "_", $arr[1]) 
+0

나는 당신의 솔루션을 더 좋아합니다. :) – Younes

+3

그러면 다음과 같은 smth가 생성됩니다. John_Rogers_III_ [SOMEETHING] _SOMETHING_ELSE –

0

"= " 에 배열 된 문자열을 분할 [\ w] + $ [i \ w] + $/i "는 일치 항목 1을" 존 로저스 III ",이 현재 예제를 기반으로하지만.

위 정규식과 함께 preg_replace_callback을 사용하면 str_replace를 사용하여 콜백 함수에서 공백을 밑줄로 바꿀 수 있습니다.

관련 문제