HTML文章中擷取摘要的問題

2021-04-14 19:34:20 字數 1271 閱讀 3100

而我們公司的部落格系統在設計之初,被很多人的意見所左右,(主要是許多沒有真正寫過部落格的人的意見),意見是使用兩個框的方式太麻煩,插入標記大部分恐怕也搞不懂,我們要給使用者提供最簡單的操作,使用者只要寫他的文章,如何擷取交給系統就可以了。由此,讓我陷入了乙個瘋狂改bug的迴圈。

從整段的html中擷取400個字作為摘要,如何處理?也許刪除所有<>標籤是最簡單的辦法,但是,部落格的文字大家還是想要保留個性,而且有人想使用大字型,或者想對某篇文章使用大字型,以便更加顯著,等等諸如此類的需求。總之,使用者只想讓自己的部落格更漂亮,才不會管你怎麼擷取。

如果只是簡單的按照400個字來擷取,那麼很可能會截到乙個標籤的中間,這半個標籤可能就會導致後面的大段文字被作為標籤內文字而不顯示,直到遇到下乙個結束符為止。於是首先要根據<>標記符,確保要擷取的位置不在這兩個標記中間。具體的做法是,找到乙個《符號,看看裡面的標記,去找它所對應的末尾標記,比如找到標記,就會出現遇到第乙個div標記的時候,直接跳到了第乙個結尾的

標記上去,結果第二個就沒有結束符了。除此之外,font, span等等都是可以巢狀的。

後來又想了個辦法,乾脆把所有的div, font, span全部過濾掉,所

全部換成br,終於,基本上不會出現截錯的問題了,但是,許多文章的分段和縮排是在div裡面使用style來定義的(不知道這些使用者的文章是從**拷過來的),結果許多人的部落格首頁文字都變成了一樣的12px文字,而且密密麻麻擠在一起,極其不美觀。再後來,還是有個使用者報怨自己部落格頁面出錯,無法開啟。進去一看,他的部落格文章裡居然有n多沒辦法了,即要保留格式,又要相容各種不可預期的標籤結構,這個問題一定要解決。

思路:想在不破壞格式的情況下擷取文字,最保險的方法是,保留所有的格式。於是想到乙個辦法,只對文字內容使用字數限制,而留下所有的html標記。比如要取400個字,那麼,從正文的第乙個字元開始算,如果是普通的文字,放入結果變數,並將記數器加1。如果記數器已經到了400,就忽略這個字。如果字元是<,那麼將其後所有的文字放入結果變數,直到》為止。這樣,最後擷取出來的摘要包括了400個文字,和一堆格式完整的html標籤。(前提是他貼進來的時候html本來就是完整的)。

但是,如果在達到400字以後後面還有一些br, p, li的話,摘要後面就會出現很大的一段空白,那當然是不行的。因此還要把這些東西處理掉,數p的個數太麻煩,把p變成br,如果記數器已經到了400,忽略掉所有的br標籤。對li也是,但是處理要特殊一點,因為不能在兩個li中間截斷。同理,可以對做同樣的處理,這樣就不會出現半個空白的**了。

總體使用下來,這個效果還是可以接受的。雖然源**裡多了很多無用的**(特別是那些從word裡面貼上文章過來的人),但是從表面上看,擷取是比較完美的。

HTML文章中擷取摘要的問題

而我們公司的部落格系統在設計之初,被很多人的意見所左右,主要是許多沒有真正寫過部落格的人的意見 意見是使用兩個框的方式太麻煩,插入標記大部分恐怕也搞不懂,我們要給使用者提供最簡單的操作,使用者只要寫他的文章,如何擷取交給系統就可以了。由此,讓我陷入了乙個瘋狂改bug的迴圈。從整段的html中擷取40...

如何擷取html的子字串作為內容摘要

在一些web應用中,如新聞 日誌等需要在其列表中提供摘要資訊,有些cms系統中提供了摘要字段,在新聞發布時手動填寫,但更為便捷的方式是直接擷取內容的前面一段作為摘要資訊。如果內容為純字元型,不帶任何格式,那便好辦,直接取其前n個字元即可,但如果內容為html 且不一定能保證html 一定符合規範,那...

PHP從內容中自動獲取文章摘要

文章一般都會有摘要需要維護,一方面是 seo,另一方面還可以滿足一些美觀的要求,就像這樣 php從內容中自動獲取文章摘要 文章摘要 經常希望後台維護好內容之後,摘要也能能自動生成乙個。原理就是過濾富文字框生成的 html 網上找了很多方法都不爽,要麼是功能沒達到要求,要麼是複雜的沒法修改。那就自己上...