如何处理 Waline 返回的 HTML 和换行符问题

学习笔记作者:admin日期:2025-06-23点击:5

摘要:Waline 返回的评论包含 HTML 标签和换行符,本文介绍了两种方法(正则替换和 DOMParser)去除这些内容,保留纯文本,并提供了代码示例。

如何处理 Waline 返回的 HTML 和换行符问题

      你遇到的问题是:从 Waline 返回的 comment 字段中包含 HTML 标签(如 <p></p>)和换行符(\n),你想去掉这些内容,只保留纯文本。

示例数据

{
  "comment": "<p>test</p>\n",
  "nick": "admin"
}

目标

      将 "comment" 字段中的:

  • HTML 标签(如 <p></p>
  • 换行符 \n

      都去掉,最终得到:

test

解决方法

方法一:使用正则表达式 + replace 去掉 HTML 和换行

function cleanComment(html) {
  // 先去除所有 HTML 标签
  let text = html.replace(/<[^>]+>/g, '');
  // 再去除 \n 和首尾空格
  return text.replace(/\n/g, '').trim();
}

方法二:使用 DOM 解析器(更安全)

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

最终代码示例

RecentComments({
  serverURL: 'https://waline.gezhong.vip',
  count: 5,
  el: '#waline-recent'
}).then(({ comments }) => {
  function cleanHTML(str) {
    const doc = new DOMParser().parseFromString(str, 'text/html');
    return doc.body.textContent || '';
  }

  const html = comments.data.map(comment => {
    const text = cleanHTML(comment.comment);
    return `
      <div class="waline-comment"
        ><strong>${comment.nick}</strong>: ${text}
      </div>
    `;
  }).join('');

  document.getElementById('waline-recent').innerHTML = html;
});

总结

      两种方法都可以有效去除 HTML 标签和换行符,推荐使用更安全的 DOMParser

上一篇      下一篇