2011-10-22 41 views
3

我要編碼(htmlentities)或禁用除<a>標籤之外的所有標籤。禁用除<a>之外的所有標籤

我該如何做到這一點?

+0

[地帶所有的HTML標記可能重複,除了允許](http://stackoverflow.com/questions/6247035/strip-all-html-tags-except-allowed) – JJJ

+0

@Juhana OP需要編碼所有的HTML標籤,除了允許的,不剝除它們。 – xdazz

回答

4

使用HTML實體後,轉換鏈接回使用正則表達式:

preg_replace('/&lt;(\/?a(?:|\s[\S\s]+?))&gt;/i', '<$1>', $string); 

如果你想移除其他標籤,使用:

strip_tags($string, '<a>'); 
+1

你應該在\之後添加\ s。現在AFAIU它將允許標籤:音頻,縮寫,acronim等 – RiaD

+0

@RiaD感謝您指出。我已經用'a(?:| \ s [\ S \ s] +?)'替換了'a。*?''。該更新還包括換行符的匹配,因爲''也是一個有效的HTML錨定標記。 –

相關問題