Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php把html批量转换成txt文件

php把html批量转换成txt文件

发布时间:2018-04-20   编辑:www.jquerycn.cn
本文介绍了php中实现html批量转换为txt文本文件的方法,一个php批量转换文件格式的例子,有需要的朋友参考下。

网上下载了多种html转txt的软件,无一例外的只转换了基本的html代码,类似 “ ” &mdash 这种特殊的html符号并没有得到转换,影响阅读体验。
用php做一个html to txt的代码。
第一步:建立html转txt的自定义函数
 

复制代码 代码示例:
<?php
function html2text($str){ 
  $str = preg_replace("/<style .*?<\/style>/is", "", $str);
  $str = preg_replace("/<script .*?<\/script>/is", "", $str);
  $str = preg_replace("/\n|\r/", "", $str);//先把文本中所有的换行替换为空,避免下面替换换行时冲突
  $str = preg_replace("/<br\s?\/?>/i", "\n", $str);
  $str = preg_replace("/<\/p>/i", "\n\n", $str);
  $str = preg_replace("/<\/?td>/i", "\n", $str);
  $str = preg_replace("/<\/?div>/i", "\n", $str);
  $str = preg_replace("/<\/?blockquote>/i", "\n", $str);
  $str = preg_replace("/<\/?li>/i", "\n", $str);
  $str = preg_replace("/\&nbsp\;/i", " ", $str);
  $str = preg_replace("/\&amp\;/i", "&", $str);
  $str = preg_replace("/\&lt\;/i", "<", $str);
  $str = preg_replace("/\&gt\;/i", ">", $str);
  $str = preg_replace("/\&quot\;/i", '"', $str);
  $str = preg_replace("/\&ldquo\;/i", '“', $str);
  $str = preg_replace("/\&rdquo\;/i", '”', $str);
  $str = preg_replace("/\&lsquo\;/i", "‘", $str);
  $str = preg_replace("/\&rsquo\;/i", "’", $str);
  $str = preg_replace("/\&mdash\;/i", '—', $str);
  $str = preg_replace("/\&hellip\;/i", '…', $str);
  $str = preg_replace("/\&middot\;/i", '·', $str);
  $str = preg_replace("/\&times\;/i", '×', $str);
  //如果有特殊需求,请在本行下面按照以上格式继续加html特殊符号和转换后的符号
  $str = strip_tags($str);//去除空字符、html 和 php 标记
  $str = html_entity_decode($str, ent_quotes, $encode);//解码双引号和单引号 &#039;
  $str = preg_replace("/\&\#.*?\;/i", "", $str); //替换所有&#开始;结尾的特殊字符
 return $str;
}
?>
 

第二步:把文件夹下的所有html文件转为txt文件
 

复制代码 代码示例:
<?php
//要读取的目录
 $folder='e:\apmserv\www\htdocs\tool\html-to-txt\files';
//打开目录
$fp=opendir($folder);
//阅读目录
while (($file = readdir($fp)) !== false){
$filetype = substr ( $file, strripos ( $file, "." ) + 1 );
$filename=substr($file,0,strrpos($file,'.'));
if($file!='.' &&$file!='..'&&$filetype == "html"){
echo $filename.'<br />';
$content=file_get_contents("$folder/$file");
//打开文件
$op = fopen("$folder/$filename.txt", 'a');
//写入文件
fwrite($op,html2text($content));
//关闭文件
fclose($op);
//删除html文件
unlink("$folder/$file");
}
}
//关闭目录
closedir($fp);
?>
 

补充知识点:html转txt小技巧
把<br>替换成换行,如果<br>已经是行末,那么把<br>替换成\n会变成2个换行,也就是说会空一行。但是我们希望出现<br>只是换行,只有出现</p>才是空一行,该怎么办呢?
其实只要在替换之前多一个步骤,把 \n和\r都替换为空,即 \n|\r 替换为空,之后再去做html标签的替换,就不会出现这些问题了。
也许有人会问,为什么既要替换\n又要替换\r呢
\n代表换行,\r代表回车,在txt文本中这两种形式都有可能存在,这是我工作中所总结的,肯定不会错!
该知识点中提到的在本案例中已经融进去了,不用担心html替换txt出现什么问题。

您可能感兴趣的文章:
php把html批量转换成txt文件
php批量生成html与txt文件
grep命令常用操作笔记
用php实现把txt文件转为htm的代码
怎么将txt改为php
php导入海量txt数据入库的实现方法
mysql replace的用法(替换指定字段字符串)
asp文件怎么转换成php文件
php不使用iconv库进行gb2312与utf-8编码转换的函数
pdf转换成ppt转换器方法介绍

关键词: 批量转换   
[关闭]