2011-11-06 2 views
0

작은 따옴표와 둥근/정사각형/중괄호 사이에있는 경우 문자열의 문자를 대체하는 preg_replace()에 대한 정규 표현식이 있습니까?PHP preg가 컨테이너 내부의 문자를 바꿉니다

예.

$var = "(replace, here) not,here 'but, here' , [and, this too] , \"oh, escaped as well\", "; 
echo preg_replace($pattern, ".", $var); 

반환합니다 :

(replace. here) not,here 'but. here' , [and. this too] , "oh. escaped as well", 

나는 정규식에 빨아. 그래서 어떤 도움을 주시면 감사하겠습니다.

건배.

답변

0

일치하는 괄호가 중요하지 않은 한이를 수행 할 수 있습니다.

$var = "(replace, here) not,here 'but, here' , [and, this too] , \"oh, escaped as well\", "; 
preg_replace('/[(["'][^)\]"\'].*(REPLACEME).*[)\]"\']/', 'REPLACEWITH', $var); 

이 후 REPLACEME의 인스턴스 검색하는 (, [, " 또는 ' 및 폐문 문자 (), ], ", ')에서와 ), ], " 또는 ' 이어 중에서.

일치하는 괄호 세트는 일반 언어가 아니므로 정규 표현식으로 표현할 수 없습니다. 따라서 ((replace,)here,)과 같은 문자열은 모호해지며 두 번째 쉼표는 대체되지 않습니다.

편집 : 내 작은 따옴표를 벗어나는 것을 잊었습니다. Fix'd (몇 년 늦었지만 결코 좋지 않음)

관련 문제