如何为歌词文本中的每行自动添加递增序号

本文介绍如何使用 php 对指定 div 内的歌词文本按换行符分割,并在每一行末尾(`
` 前)动态插入递增序号,实现类似“第1行、第2行…”的排版效果。

在网页开发中,有时需要对纯文本内容(如歌词、诗歌或用户提交的多行输入)进行结构化编号,但
标签本身不具备语义性,无法像

    那样通过 CSS ::before 或计数器(counter-increment)直接实现行号渲染。因此,必须借助服务端逻辑完成预处理。

    推荐使用 PHP 的 explode() 函数,以系统换行符 PHP_EOL 为分隔符将完整歌词字符串拆分为数组,再遍历并拼接序号。注意:实际 HTML 中的
    往往由 \n、\r\n 或用户粘贴行为生成,因此需统一归一化换行符
    ,避免因换行符不一致导致分割失败。

    ✅ 正确示例代码如下:

     $line) {
        if (trim($line) !== '') { // 跳过空行,避免输出 "10
    " 后跟 "11
    " 的错位 echo htmlspecialchars($line) . ' ' . ($index + 1) . '
    '; } } ?>

    ? 关键注意事项:

  • 安全防护:务必使用 htmlspecialchars() 对 $line 转义,防止 XSS 攻击(尤其当歌词来自用户输入时);
  • 空行处理:trim($line) !== '' 可过滤掉因多余回车产生的空白行,避免序号错乱;
  • HTML 上下文适配:若该歌词嵌入在特定 中,请确保 PHP 输出位于对应标签内,例如
  • 替代方案提示:若需前端动态编号(如支持编辑、实时更新),建议改用 JavaScript + + split('\n'),但服务端预处理更稳定、SEO 友好且无需 JS 依赖。

    综上,该方法轻量、可靠、易于集成,是为
    分隔的纯文本行添加递增序号的标准实践。