2009-07-31 4 views
0

다음과 같은 문자열이 있습니다 조치 - [N] ew, [U] pdate 또는 [D] elete : N " ew, [U] pdate, 또는 [D] elete : U "somhow는 preg_replace를 사용하여 작동하지 않습니다. 그것은 동일하게 유지됩니다.preg_replace를 사용하여 문자열을 다른 문자열로 바꾸기

내 코드

$action = Action - '[N]ew, [U]pdate, or [D]elete : U'; 
$line = preg_replace("/(Action - [N]ew, [U]pdate, or [D]elete : N)/",$action,$line); 

답변

3

[]는 정규 표현식에서 특수 문자 다음과 같습니다.

"/(Action - \[N\]ew, \[U\]pdate, or \[D\]elete : N)/" 
탈출되지 않고

, 표현을 [] 내에서 내 모든 문자 중 하나와 일치합니다 : 당신이 그들을 일치 할 경우를 탈출해야합니다. 원래의 경우 "[N]ew""New"이었습니다. "[NP]ew" 인 경우 "New" 또는 "Pew"과 일치했을 것입니다. (가) '['와 ']'

+0

들으을,이 실제로 쉬웠다, 내가 알고 하루 ;-) – Roland

0

시도. 간단한 str_replace 충분합니다 :

$action = 'Action - [N]ew, [U]pdate, or [D]elete : U'; 
$line = str_replace('Action - [N]ew, [U]pdate, or [D]elete : N', $action, $line); 
2

당신은 그렇게 preg_replace 필요하지 않습니다 탈출

+0

코딩을 너무 많이했다 + 1의 대체 간단한 솔루션입니다. 나는 그의 예가 단순화 된 경우를 대비하여 나의 대답을 기다리게 할 것이다. – Welbog

2

부부 문제 : 첫 번째 줄에

1) 구문 오류가 발생했습니다. 따옴표가 잘못 배치되었습니다. 그것은해야한다 :

$action = "Action - [N]ew, [U]pdate, or [D]elete : N"; 

2) 당신은 정규 표현식에 대괄호 ([])를 탈출해야합니다. 또한, 당신이 할 수 있습니다

$line = preg_replace("/N$/", "U", $action); 

을 그래서 그들을 결합 :

$action = "Action - [N]ew, [U]pdate, or [D]elete : N"; 
$line = preg_replace("/N$/", "U", $action); 
관련 문제