2013-02-17 2 views
0

내 사용자 지정 템플릿 시스템에 대한 출력 preg_replace 함수를 만들려고합니다.Preg_replace for/* ... */

나는 다음과 같은 시도 :

// Outcomment 
$pattern[] = "//*(.*?)/*/is"; 
$replace[] = ""; 

$content = preg_replace($pattern, $replace, $content); 

하지만 내가 잘 작동을 preg_replace이다 방법을 이해 모르겠습니다.

/**/ 사이의 모든 항목이 제거되도록 노력하고 있습니다.

+1

당신은 구분 기호를 탈출해야합니다 (여기에'/') 당신의 패턴 내부뿐만 아니라'*'로. – Gumbo

답변

2

이 시도 :

$str = "Hello my name /* some comment */ is PHP /* and this comment*/ " ;  
$clean = preg_replace("/\/\*(.*?)\*\//", "", $str) ; 

echo $clean ; //Outputs Hello my name is PHP 
1

첫 번째로 탈출을 고려하지 않고도 식의 양쪽 끝에 /*이 있기 때문에 끝에있는 쪽이 잘못되었습니다.

두 번째로 /*은 정규식의 특수 문자이므로 앞의 백 슬래시로 이스케이프 처리해야합니다.

그래서 표현이처럼 보이는 끝낼 것 : 도움이

"/\/\*(.*?)\*\//is" 

희망을.

마지막으로, 주석이 중첩 될 수 있으면이 표현식이 실패합니다 (즉, 주석 내의 주석). 이렇게하면 많은과 일치하기 어렵습니다.