旨在优化文本处理任务的效率与效果。其核心功能是通过分析文本结构、语义或固定长度,将大段内容拆分为逻辑连贯的小单元,从而适配下游任务的输入限制(如大语言模型的上下文窗口),或提升文本分析的精准度。支持按字符数、句子、段落、语义边界(如标点)或自定义规则(如Markdown标题)灵活切割文本。

有需要的小伙伴可以搭建玩玩,下面是代码。

代码展示网页:https://diuta.com/app/txt.php

`<?php

// 定义允许的文件类型

define('ALLOWED_MIME', ['text/plain']);

define('MAX_FILE_SIZE', 1048576); // 1MB

// 处理表单提交

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

$output = [];

$error = '';

try {
// 获取输入文本
$text = '';
if (isset($_FILES['uploadFile']) && $_FILES['uploadFile']['error'] === UPLOAD_ERR_OK) {
// 验证上传文件
if ($_FILES['uploadFile']['size'] > MAX_FILE_SIZE) {
throw new Exception('文件大小超过限制');
}
if (!in_array($_FILES['uploadFile']['type'], ALLOWED_MIME)) {
throw new Exception('仅支持文本文件');
}
$text = file_get_contents($_FILES['uploadFile']['tmp_name']);
} else {
$text = $_POST['textInput'] ?? '';
} // 验证输入内容
if (empty($text)) {
throw new Exception('请输入文本或上传文件');
} // 获取分割参数
$splitType = $_POST['splitType'] ?? 'character';
$splitParam = $_POST['splitParam'] ?? '';
$outputFormat = $_POST['outputFormat'] ?? 'text'; // 执行分割操作
$output = splitText($text, $splitType, $splitParam); // 格式化输出
$output = formatOutput($output, $outputFormat); } catch (Exception $e) {
$error = $e->getMessage();
}

}

/**

  • 文本分割函数

    */

    function splitText($text, $type, $param) {

    switch ($type) {

    case 'character':

    $chunkSize = max(1, (int)$param ?: 100);

    return str_split($text, $chunkSize);

     case 'line':
    return explode(PHP_EOL, $text); case 'custom':
    $delimiter = empty($param) ? ',' : $param;
    return explode($delimiter, $text); case 'regex':
    return preg_split('/'.$param.'/', $text, -1, PREG_SPLIT_NO_EMPTY); default:
    throw new Exception('无效的分割类型');

    }

    }

/**

  • 格式化输出

    */

    function formatOutput($data, $format) {

    switch ($format) {

    case 'html':

    return ['

      '.implode('', array_map(function($item) {

      return '
    1. '.htmlspecialchars($item).'
    2. ';

      }, $data)).'

    '];

     case 'json':
    return [json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)]; case 'text':
    default:
    return $data;

    }

    }

    ?>

PHP文本分割器
.container { max-width: 800px; margin: 20px auto; padding: 20px }
.form-group { margin-bottom: 15px }
.result-box { margin-top: 20px; padding: 15px; border: 1px solid rgba(221, 221, 221, 1) }
pre { white-space: pre-wrap; background: rgba(245, 245, 245, 1); padding: 10px }

文本分割器

    <form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>输入文本:</label>
<textarea name="textInput" rows="5" style="width: 100%"><?= isset($_POST['textInput']) ? htmlspecialchars($_POST['textInput']) : '' ?></textarea>
</div> <div class="form-group">
<label>或上传文件:</label>
<input type="file" name="uploadFile">
</div> <div class="form-group">
<label>分割方式:</label>
<select name="splitType">
<option value="character" <?= ($_POST['splitType'] ?? '') === 'character' ? 'selected' : '' ?>>按字符数</option>
<option value="line" <?= ($_POST['splitType'] ?? '') === 'line' ? 'selected' : '' ?>>按行分割</option>
<option value="custom" <?= ($_POST['splitType'] ?? '') === 'custom' ? 'selected' : '' ?>>自定义分隔符</option>
<option value="regex" <?= ($_POST['splitType'] ?? '') === 'regex' ? 'selected' : '' ?>>正则表达式</option>
</select>
<input type="text" name="splitParam" value="<?= htmlspecialchars($_POST['splitParam'] ?? '100') ?>"
placeholder="输入参数">
</div> <div class="form-group">
<label>输出格式:</label>
<select name="outputFormat">
<option value="text">纯文本</option>
<option value="html">HTML列表</option>
<option value="json">JSON</option>
</select>
</div> <button type="submit">执行分割</button>
</form> <?php if (isset($error) && $error): ?>
<div class="result-box error">
<?= htmlspecialchars($error) ?>
</div>
<?php elseif (!empty($output)): ?>
<div class="result-box">
<h3>分割结果 (共 <?= count($output) ?> 段)</h3>
<?php if ($outputFormat === 'json'): ?>
<pre><?= htmlspecialchars($output) ?></pre>
<?php else: ?>
<?php foreach ($output as $i => $segment): ?>
<div><strong>段 <?= $i+1 ?>:</strong></div>
<?php if ($outputFormat === 'html'): ?>
<?= $segment ?>
<?php else: ?>
<pre><?= htmlspecialchars($segment) ?></pre>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?> <div style="margin-top: 15px;">
<a href="data:text/plain;charset=utf-8,<?= urlencode(implode("\n", $output)) ?>" download="split_result.txt">
下载结果
</a>
</div>
</div>
<?php endif; ?>
</div>

@丢塔网diuta.com
`

有bug小伙伴可以自己修复一下,如果上面的展示页面没有了可以看这个:http://app.diuta.com/txt

文本分割器html代码的更多相关文章

  1. C#txt文本分割器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. Python 文本解析器

    Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...

  3. 文本切换器(TextSwitcher)的功能和用法

    TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果.与ImageSwitcher相似的是,使用TextSw ...

  4. python3 - 文本读音器

    本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来:做这么个小工具主要是为了方便自己在平时看一些文章眼累的时候,可通过语音来帮助自己,当然如果你是小说迷,可以扩展 ...

  5. 13 KNN背景分割器

    传统的前景背景分割方法有GrabCut,分水岭算法,当然也包括一些阈值分割的算法.但是这些算法在应用中往往显得鲁棒性较弱,达不到一个好的分割效果. 现代的背景分割算法融入了机器学习的一些方法来提高分类 ...

  6. Unity 5着色器系统代码介绍(上)

    http://forum.china.unity3d.com/thread-25724-1-10.html Unity 5着色器系统代码介绍(上) Unity在着色器开发方面提供了很大的灵活性.有些工 ...

  7. Opencv中KNN背景分割器

    背景分割器BackgroundSubtractor是专门用来视频分析的,会对视频中的每一帧进行"学习",比较,计算阴影,排除检测图像的阴影区域,按照时间推移的方法提高运动分析的结果 ...

  8. NLP基本任务-nltk_data文本分割

    将文本分割为句子 nltk.sent_tokenize(text,language) text:需要分割的文本 language:语言种类 czech捷克语 danish丹麦语 dutch荷兰语 en ...

  9. 淘宝IP地址库采集器c#代码

    这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下. 最近做一个项目,功能类似于CNZZ站长统计功能,要求显示Ip所在的省份市区/提供商等信息.网上的Ip纯真数据库,下载下来一看 ...

  10. HTML超出文本多行截取代码

    HTML超出文本多行截取代码如下: HTML: <div class="sytm-text-1">      <p>           沈阳网页制作公司有 ...

随机推荐

  1. [每日算法 - 华为机试] 剑指 Offer 10- II. 青蛙跳台阶问题

    入口 力扣https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该 ...

  2. 国产化-内存数据库tendis-单机安装(完美替代redis)

    挺好的产品腾讯能开源还是体现了大厂的担当和格局,赞一个.阿里也开源了一些不错的产品后面讲. Tendis 介绍 Tendis 是腾讯公司开源的一款高性能分布式存储系统,基于 Redis 协议开发,具有 ...

  3. Service Reliability Management: A Comprehensive Overview

    Service Reliability Management: A Comprehensive Overview Service reliability management is a critica ...

  4. docker概述及镜像管理

    dockers概述 docker官方网站 docker官网:https://www.docker.com/ docker镜像仓库:https://hub.docker.com/ 什么是docker? ...

  5. gRPC 和传统 RPC 有啥不一样?一篇讲清楚!

    现在大家做系统开发,都喜欢搞"微服务架构"--简单说就是把一个大系统拆成很多小服务,这样更灵活也更容易扩展.那这些服务之间怎么沟通呢?就得靠一种技术叫 RPC(远程过程调用).今天 ...

  6. 解决React Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?

    问题 当我使用如下方式调用组件子组件UploadModal并且绑定Ref时React报错"Warning: Function components cannot be given refs. ...

  7. kubelet 创建 Pod 前发生了什么?

    Kubelet Watch 到新增的 Pod,需要做的主要有以下几件事: 管理 Pod 状态,除了更新本地缓存,还要同步给 API server 计算节点的资源是否足够创建 Pod 创建 Cgroup ...

  8. Java编程--单例(Singleton)设计模式

    单例设计模式 一个类只有一个实例,根据创建的时机又分为懒汉式和饿汉式,它们的区别主要体现在实例的创建时机和线程安全性上. 饿汉式(Eager Initialization): 特点: 在类加载时就创建 ...

  9. 代码随想录第十五天 | Leecode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和、222. 完全二叉树的节点个数

    Leecode 110. 平衡二叉树 题目描述 给定一个二叉树,判断它是否是 平衡二叉树(是指该树所有节点的左右子树的高度相差不超过 1.) 示例 1: 输入:root = [3,9,20,null, ...

  10. IO流-转换流、序列化流--java进阶day14

    1.转换流 转换流本质还是字符流的子类 转换流的作用 1.可以按照指定的编码进行读写操作 我们使用的IO流,默认格式都是UTF-8,如果一个文件是GBK格式,在读写的时候就会乱码,此时就可以使用转换流 ...