我有以下的HTML。如何申請格式化多個div的文本區域。
<div>this is line 1 {start-hidden}</div>
<div>this is line 2</div>
<div>{end-hidden} this is line 3</div>
我希望{start-hidden}和{end-hidden}之間的文本不可見。我怎樣才能做到這一點?請注意,「開始隱藏」和「結束隱藏」可能在不同的地方。它有一些額外的標記。
我需要一些奇特的正則表達式還是使用服務器端DOM操作會更好?
謝謝。
我去(和PHP)的解決方案(對於那些有興趣):
正則表達式來提取裏面的所有文本(+ HTML)【開始隱藏}和{end隱藏} [調用這個部分$ inner]以及[$ pre]之前和[$ post]之後的所有文本。
preg_match('#^(.*?){start-hidden}(.*?){end-hidden}(.*?)$#is', $source, $matches)
然後刪除$ inner內的新行的任何原因。也只能刪除那些結束標籤。
// attempt to remove all sources of new lines
$inner = preg_replace('#<br([^>])*>#is', '', $inner);
$inner = preg_replace('#<div([^>])*>(.*?)</div>#is', '', $inner);
$inner = preg_replace('#<p([^>])*>(.*?)</p>#is', '', $inner);
然後,我們發現每一個吃剩的標籤和前綴</span>和追加<跨度類= 「隱藏」>。
$inner = preg_replace('#(<[^>]+>)#is', '</span>${1}<span class="hidden">', $inner),
然後前綴$內有<跨度類= 「隱藏」>並追加</SPAN>
$inner = '<span class="hidden">' . $inner . '</span>';
最後加入它全部重新走到一起(和再次重複,如果你可以的preg_match()) 。
$source = $pre;
$source .= $inner;
$source .= $post;
難道你不能僅僅用一種標記可以用div隱藏的塊的方式來生成HTML代碼嗎?你爲什麼要約束這種表示? –