2010-12-10 2 views
2

그냥 내가 주어진 문자열PHP : 사용 preg_replace이다를 대체 할 수있다()

$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str); 

에 object 태그를 대체하고있어하지만 무엇이 잘못되었는지

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o' 

같은 오류를 보여주고있다?

답변

1

</object>의 슬래시는 <\/object>이어야하며, 그렇지 않으면 슬래시로 구분하여 정규 표현식의 끝으로 해석해야합니다. 전체 줄을 읽어야합니다 :

$matches = preg_replace("/<object(.+?)<\\/object>/","replacing string",$str); 
+0

@ACBalaji 가능한 경우이 대답을 수락하는 것을 잊지 마십시오. – alex

0

정규식에서 슬래시는 정규식 구분 기호입니다. 당신이 태그를 다루고있는 것처럼, 더 나은 (대신 백 슬래시로 이스케이프의) 다른 구분 기호를 사용

$matches = preg_replace("#<object(.+?)</object>#", "replacing string", $str); 

도 다른 delimiteres있다. 영숫자가 아닌 백 슬래시가 아닌 공백이 아닌 문자를 사용할 수 있습니다. 그러나 특정 구분 기호는 어떠한 경우에도 사용하지 말아야합니다. |, +, * 및 괄호/괄호는 정규 표현식에서 자주 사용되기 때문에 사람들을 혼란에 빠뜨리고 싫어하게 만듭니다.

Btw, HTML의 정규식 사용은 Bad Thing입니다!

0

첫 번째 문자는 구분 기호로 사용되어 플래그와 표현을 구분합니다. 따라서이 :

"/[a-z]+/i" 

... 내부적으로 분할되어

- Pattern: [a-z]+ 
- Flags: i 

그래서이 :

"/<object(.+?)</object>/" 

을 ... 유효한 정규 표현식이 아닙니다. 이것을 시도하십시오 :

"@<object(.+?)</object>@"