2012-02-24 2 views
0

나는 [CODE]...[/CODE]의 모든 어커런스를 대체하는 문자열을가집니다. preg_replace_callback으로 태그의 내용을 처리하는 함수를 호출 할 수 있습니까? 하지만 그 발생과 관련된 모든 문자열을 어떻게 조작 할 수 있습니까?preg_replace_callback의 문자열 부분을 다르게 처리합니다.

예 :이 경우 some code에, [CODE]의 내용을 조작 preg_replace_callback와 지금

$str = "Hello, I am a string with [CODE]some code[/CODE] in it"; 

. 하지만이 문자열의 다른 모든 텍스트를 원합니다. 따라서 Hello, I am a string within it은 다른 작업을 수행합니다. 어떻게하면 좋을까요?

도움 주셔서 감사합니다.

플로

답변

2

내가 정규식을 볼 수 있지만 요점은 당신이 캡처 그룹을 원하는 생각하는 경우 그것은 간단하게 될 것입니다.

괄호로 묶은 그룹에 배치하여 개별적으로 액세스 할 수 있어야합니다. 각 섹션은 콜백에서 사용할 수 있습니다. 따라서 /(.*)(\[CODE\].*\[/CODE\])(.*)/과 같은 코드는 일치하는 배열을 콜백에 전달해야합니다.

+1

정규식은/(. *) (\ [CODE \]. * \ [\/CODE \]) (. *) /' 그래야하지 않니? '\ [CODE \]'는 두 번째 코드가'[/ CODE]'인 동안 [CODE]를 받아들입니다. –

+1

@ ConstantinNaryshkin 그래, 고마워. 나는 캡쳐 그룹 배열이 바른 방향으로 움직이기를 바라고 있었지만 잘못된 정규 표현식은 혼란 스럽다. 내가 고칠거야. – menacingly

관련 문제