2013-07-04 68 views
2

我希望能夠在我的視圖文件中寫入一些註釋,並在發送到用戶瀏覽器之前將其刪除。從字符串中刪除多行註釋

什麼樣的評論可能是一個例子是:

### - [[VIEW COMMENTS 
# Comments for a view file. 
# 
### - VIEW COMMENTS END]] 

凡靜態部分是1號線和4號線 - 在可變之間的一切。

我該怎麼做?我已經試過了preg_replace,但它不是全成:

$build = preg_replace("/([### - \[\[VIEW COMMENTS])([^\[\]+)([### - VIEW COMMENTS END\]\]])", '', $build); 

答案是(由Anirudh製造):

$build = preg_replace('/(?s)(\r?\n|^)###.*?(\r?\n)###.*?(?=\r?\n|$)/', '', $build); 

,我也做了這方面的工作我自己:

$build = preg_replace('/([### - [[VIEW COMMENTS])(.*)([### - VIEW COMMENTS END]]])/s', '', $build); 

謝謝...

+0

相關:[正則表達式剝離註釋和多行註釋和空行](http://stackoverflow.com/questions/643113/regex-to -strip-comments-and-multi-line-comments-and-empty-lines) – bansi

回答

1

我會用這樣的東西

(?s)(?<=\r?\n|^)###.*?(?<=\r?\n)###.*?(?=\r?\n|$) 

(?s)切換單模式使能.匹配換行符

+0

This:/(?s)(?<= \ r?\ n | ^)###。*?(?<= \編譯失敗:lookbehind斷言不是固定的長度在偏移量13 – denlau

+0

嘗試不使用lookbehind'(?s)?????????????????? (\ r?\ n | ^)###。*?(\ r?\ n)###。*?(?= \ r?\ n | $)' – Anirudha

+0

工作原理 - 版本,這也工作 - 如果靜態部分每次都使用。我要添加我的問題的答案:) 非常感謝! – denlau