欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實(shí)現(xiàn)HTML轉(zhuǎn)換為純文本的幾種方法

 更新時(shí)間:2025年05月08日 14:32:29   作者:夢(mèng)幻星辰吧  
本文主要介紹了六種將HTML轉(zhuǎn)換為純文本的方法,包括使用DOMParser、創(chuàng)建臨時(shí)div元素、正則表達(dá)式替換、Element.textContent(瀏覽器環(huán)境)、DOMPurify庫(kù)和JSDOM庫(kù),每種方法都有其優(yōu)缺點(diǎn),選擇合適的方法取決于具體需求和使用環(huán)境,需要的朋友可以參考下

1. 使用 DOMParser 和 textContent

DOMParser 可以將 HTML 字符串解析為 DOM 文檔,然后使用 textContent 屬性獲取純文本內(nèi)容。

function htmlToTextUsingDOMParser(html) {
    const parser = new DOMParser();
    const doc = parser.parseFromString(html, 'text/html');
    return doc.body.textContent || '';
}

// 示例使用
const htmlString = '<p>這是一段 <strong>HTML</strong> 文本。</p>';
const plainText = htmlToTextUsingDOMParser(htmlString);
console.log(plainText); 

2. 創(chuàng)建臨時(shí) div 元素

創(chuàng)建一個(gè)臨時(shí)的 div 元素,將 HTML 內(nèi)容插入其中,然后使用 textContent 屬性獲取純文本。

function htmlToTextUsingDiv(html) {
    const div = document.createElement('div');
    div.innerHTML = html;
    return div.textContent || '';
}

// 示例使用
const htmlString2 = '<h1>標(biāo)題</h1><p>段落內(nèi)容</p>';
const plainText2 = htmlToTextUsingDiv(htmlString2);
console.log(plainText2); 

3. 正則表達(dá)式替換

使用正則表達(dá)式替換 HTML 標(biāo)簽,從而得到純文本。不過(guò)這種方法有局限性,因?yàn)檎齽t表達(dá)式很難處理所有復(fù)雜的 HTML 標(biāo)簽情況。

function htmlToTextUsingRegex(html) {
    return html.replace(/<[^>]*>?/gm, '');
}

// 示例使用
const htmlString3 = '<a href="#" rel="external nofollow"  rel="external nofollow" >鏈接</a> 文本';
const plainText3 = htmlToTextUsingRegex(htmlString3);
console.log(plainText3); 

以上三種方法各有優(yōu)缺點(diǎn),DOMParser 和創(chuàng)建臨時(shí) div 元素的方法更可靠,因?yàn)樗鼈兡苷_處理 HTML 實(shí)體和嵌套標(biāo)簽;而正則表達(dá)式方法簡(jiǎn)單但不夠健壯,僅適用于簡(jiǎn)單的 HTML 字符串。

除了之前提到的方法,還有其他幾種將 HTML 轉(zhuǎn)換為純文本的方式,下面為你深入介紹:

4. 使用 Element.textContent(瀏覽器環(huán)境)

如果你在瀏覽器環(huán)境中,可以直接創(chuàng)建一個(gè) div 元素并將 HTML 內(nèi)容插入其中,然后獲取 textContent 屬性。這種方法和前面創(chuàng)建臨時(shí) div 元素類(lèi)似,但更簡(jiǎn)潔。

function htmlToTextUsingElement(html) {
    const element = document.createElement('div');
    element.innerHTML = html;
    return element.textContent;
}

// 示例使用
const htmlString4 = '<span>這是一個(gè) <em>示例</em>。</span>';
const plainText4 = htmlToTextUsingElement(htmlString4);
console.log(plainText4); 

5. 使用 DOMPurify 庫(kù)

DOMPurify 是一個(gè)用于凈化 HTML 輸入的庫(kù),它可以幫助你安全地移除 HTML 標(biāo)簽,同時(shí)避免 XSS 攻擊。在處理不可信的 HTML 輸入時(shí),這是一個(gè)很好的選擇。

首先,你需要安裝 DOMPurify

npm install dompurify

然后在代碼中使用:

import DOMPurify from 'dompurify';

function htmlToTextUsingDOMPurify(html) {
    const clean = DOMPurify.sanitize(html, { ALLOWED_TAGS: [] });
    return clean;
}

// 示例使用
const htmlString5 = '<a href="#" rel="external nofollow"  rel="external nofollow"  onclick="alert(\'XSS\')">危險(xiǎn)鏈接</a>';
const plainText5 = htmlToTextUsingDOMPurify(htmlString5);
console.log(plainText5); 

6. 使用 JSDOM(Node.js 環(huán)境)

如果你在 Node.js 環(huán)境中,可以使用 JSDOM 庫(kù)來(lái)模擬瀏覽器環(huán)境,然后獲取純文本內(nèi)容。

首先,安裝 JSDOM

npm install jsdom

然后在代碼中使用:

const { JSDOM } = require('jsdom');

function htmlToTextUsingJSDOM(html) {
    const dom = new JSDOM(html);
    return dom.window.document.body.textContent;
}

// 示例使用
const htmlString6 = '<h2>Node.js 示例</h2><p>這是一個(gè)使用 JSDOM 的示例。</p>';
const plainText6 = htmlToTextUsingJSDOM(htmlString6);
console.log(plainText6); 

方法對(duì)比

  • DOMParserElement.textContent:適用于瀏覽器環(huán)境,簡(jiǎn)單易用,能正確處理 HTML 實(shí)體和嵌套標(biāo)簽。
  • DOMPurify:主要用于凈化 HTML 輸入,在處理不可信的 HTML 時(shí)非常有用,能有效防止 XSS 攻擊。
  • JSDOM:適用于 Node.js 環(huán)境,模擬瀏覽器環(huán)境來(lái)處理 HTML,功能強(qiáng)大但引入了額外的依賴(lài)。
  • 正則表達(dá)式:簡(jiǎn)單快速,但無(wú)法處理復(fù)雜的 HTML 結(jié)構(gòu)和嵌套標(biāo)簽,容易出錯(cuò)。

根據(jù)你的具體需求和使用環(huán)境,選擇合適的方法來(lái)將 HTML 轉(zhuǎn)換為純文本。

以上就是JavaScript實(shí)現(xiàn)HTML轉(zhuǎn)換為純文本的幾種方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript HTML轉(zhuǎn)文本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • javascript中sessionStorage的存儲(chǔ)機(jī)制的使用小結(jié)

    javascript中sessionStorage的存儲(chǔ)機(jī)制的使用小結(jié)

    本文主要介紹了javascript中sessionStorage的存儲(chǔ)機(jī)制的使用,包括其作用域、生命周期、存儲(chǔ)容量、數(shù)據(jù)類(lèi)型以及API的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-05-05
  • 小試SVG之新手小白入門(mén)教程

    小試SVG之新手小白入門(mén)教程

    這篇文章主要給大家介紹了關(guān)于SVG的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 分享10個(gè)優(yōu)化代碼的CSS和JavaScript工具

    分享10個(gè)優(yōu)化代碼的CSS和JavaScript工具

    如果你想在保持文件的時(shí)候或執(zhí) 行的階段lint代碼,那么linting工具也可以如你所愿。這取決于個(gè)人的選擇。如果你正在找尋用于CSS和JavaScript最好的 linting工具,那么請(qǐng)繼續(xù)閱讀
    2016-05-05
  • JavaScript使用多線程實(shí)現(xiàn)一個(gè)大文件上傳

    JavaScript使用多線程實(shí)現(xiàn)一個(gè)大文件上傳

    這篇文章主要為大家詳細(xì)介紹了JavaScript使用多線程實(shí)現(xiàn)一個(gè)大文件上傳的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-11-11
  • 怎樣用Javascript實(shí)現(xiàn)建造者模式

    怎樣用Javascript實(shí)現(xiàn)建造者模式

    這篇文章主要介紹了怎樣用Javascript實(shí)現(xiàn)建造者模式,想學(xué)習(xí)設(shè)計(jì)模式的同學(xué),可以參考下
    2021-04-04
  • 高性能js數(shù)組去重(12種方法,史上最全)

    高性能js數(shù)組去重(12種方法,史上最全)

    數(shù)組去重,一般都是在面試的時(shí)候才會(huì)碰到,一般是要求手寫(xiě)數(shù)組去重方法的代碼。如果是被提問(wèn)到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對(duì)你刮目相看
    2019-12-12
  • JS執(zhí)行刪除前的判斷代碼

    JS執(zhí)行刪除前的判斷代碼

    這篇文章主要介紹了JS執(zhí)行刪除前如何實(shí)現(xiàn)判斷,需要的朋友可以參考下
    2014-02-02
  • layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法

    layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • Object.defineproperty方法示例詳解

    Object.defineproperty方法示例詳解

    Object.defineproperty?的作用就是直接在一個(gè)對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)已經(jīng)存在的屬性,這篇文章主要介紹了Object.defineproperty方法,需要的朋友可以參考下
    2022-12-12
  • JavaScript遍歷數(shù)組的方法代碼實(shí)例

    JavaScript遍歷數(shù)組的方法代碼實(shí)例

    這篇文章主要介紹了JavaScript遍歷數(shù)組的方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論