谈在一个将TXT按章节分割的PHP程序中的收获
最近在做一个自动分割txt小说的东西,能够将一整个txt文件按照章节进行分割,然后分解成一个个小的.txt文件保存起来并且能够获取有多少章节和每章的章节名。 我最初的想法是: ① 先使用fopen打开文件,然后while循环使用fgets函数按txt文件中每一行读取 ②
最近在做一个自动分割txt小说的东西,能够将一整个txt文件按照章节进行分割,然后分解成一个个小的.txt文件保存起来并且能够获取有多少章节和每章的章节名。
我最初的想法是:
① 先使用fopen打开文件,然后while循环使用fgets函数按txt文件中每一行读取
② 边读取 边使用正则匹配出是否在这一句话中含有 “第**章”或者是“第**节”的字符串。如果有的话就把它存到一个数组中去。
③ 全部循环完成后使用count来计算数组的大小,然后使用foreach循环数组,将每一章的章节名进行字符串拼接(比如拼接成 '#章节名#' 这样的形式存到数据库中便于以后使用explode等函数进行章节名的分割)。
然后我就按照这个思路开始敲代码了。。但是很快便遇到了第一个问题
---- 如何使用正则表达式来匹配中文!!!
之前一直都是使用正则表达式来匹配一些英文啊字符啊什么的,我也一直以来都以为正则表达式可以直接匹配汉字的,于是就写了下面这样的代码
<span>if</span>(<span>preg_match</span>("/第[0-9一二两三四五六七八九十百千万]*[章节]/i",<span>$hangdata</span>,<span>$matches</span><span>)){ }</span>
我真的是把这个想的太容易了一点。。。结果就是什么也没有匹配出来。。
很多时候遇到问题第一想法就是不可能!!!然后就用把这行简单的代码看了一下,却没有发现有什么问题啊。。于是便开始百度,不得不说百度真的有很多有用的东西,很快便找到了网友共享的匹配中文字符的内容,要把汉字改成Unicode编码形式再去匹配。。。下面则是修改之后的代码
<span>if</span>(<span>preg_match</span>("/(\x{7b2c})(\s*)([\x{4e00}\x{4e8c}\x{4e09}\x{56db}\x{4e94}\x{516d}\x{4e03}\x{516b}\x{4e5d}\x{5341}\x{767e}\x{5343}0-9]+)(\s*)([\x{7ae0}\x{8282}]+)/u",<span>$hangdata</span>,<span>$matches</span><span>)){ }</span>
我想这次应该是没有问题了吧~正高兴着刷新了一下网页。。。我去 怎么又没出来东西。。是不是网友的贡献出错了?于是仔细检查了一边却还是没发现有什么问题,于是网上找个一个php在线中文手册看了一下,原来使用preg_match匹配中文要求被匹配的内容是UTF-8编码。。而从txt中读取出来的一般是GBK编码的
于是又在前面加了一行字符转换代码
<span>$hangdata</span>=mb_convert_encoding(<span>$hangdata</span>,"UTF-8","GBK");
现在一运行~OK 完成了
但是就在滚动页面的时候却发现同一个章节的名字却被匹配出来两次甚至更多。。这个错误很严重啊,之前人家作者写了一章的内容,用这个一分变成好多章了。。
于是就在匹配出每一章的章节名的时候和距离他最近的读取出来的章节名进行对比,看是不是一样。
于是就在最开始定义了一个空的字符串变量
每次循环的时候都与当前章节名进行对比 如果一样,就不再把当前的这一个章节名记录下来,如果不一样就记录下了并把章节名赋给这个变量。
虽然还有一点不尽人意的地方,但是主要的功能基本都已经实现了

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.
