我在我的一個項目中使用TinyMCE(所見即所得)作爲默認編輯器,有時它會自動添加<p> </p> , <p> </p>
或div。正則表達式用於清理空的不必要的HTML標記
我一直在尋找,但我真的找不到用正則表達式清理任何空標籤的好方法。
我試圖使用的代碼,
$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";
$str = preg_replace($pattern, '', $str);
注:我也想清楚了& nbsp是否太:(
我在我的一個項目中使用TinyMCE(所見即所得)作爲默認編輯器,有時它會自動添加<p> </p> , <p> </p>
或div。正則表達式用於清理空的不必要的HTML標記
我一直在尋找,但我真的找不到用正則表達式清理任何空標籤的好方法。
我試圖使用的代碼,
$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";
$str = preg_replace($pattern, '', $str);
注:我也想清楚了& nbsp是否太:(
嘗試 /<(\w+)>(\s| )*<\/\1>/
代替:)
這一點。正則表達式有點奇怪 - 但看起來像可能工作。你可以試試這個:
$pattern = ':<[^/>]*>\s*</[^>]*>:';
$str = preg_replace($pattern, '', $str);
雖然很相似。
放棄白色空間可能不是一個好主意。你可能不希望「你好世界」成爲「Helloworld」。 – 2009-05-22 22:43:29
我知道這不是直接問你的要求,但經過幾個月的TinyMCE,不僅應付這個,而且是來自用戶從Word直接發佈的地獄,我已經切換到FCKeditor,並且不能更快樂。
編輯:以防萬一它不明確,我在說的是,FCKeditor不插入任何部分感覺就像它,再加上應付粘貼的Word廢話開箱。你可能會發現我的previous question有幫助。
你會想要多個正則表達式來確保你不會消除其他通用元素。
正如本說,你可能會降低有效的元素,用一個通用的正則表達式
<\s*[^>]*>\s*` `\s*<\s*[^>]*>
<\s*p\s*>\s*<\s*/p\s*>
<\s*div\s*>\s*<\s*/div\s*>
試試這個:
<([\w]+)[^>]*?>(\s| )*<\/\1>
那麼您需要更換空白中的第二個參數的preg_replace()? – pix0r 2009-05-22 23:13:36
您可以使用\ 2(或$ 2,我忘記PHP中的語法)在標籤之間插入空格。 – 2009-05-23 09:51:17